문자열의 기초를 다루는 문제
문자열 밀기 [Lv. 0]
from collections import deque
def rotate_right(A, B):
cnt = 0
A = deque(A)
B = deque(B)
while (A != B):
if cnt == len(A):
break
tmp = A.pop()
A.appendleft(tmp)
cnt += 1
print(A, cnt)
return cnt
def solution(A, B):
answer = rotate_right(A, B)
if answer == len(A):
answer = -1
return answer
deque
의 appendleft
메소드를 활용하면 간편하게 가장 앞쪽으로 원소를 삽입할 수 있다.

옹알이(1) [Lv. 0]
def solution(babbling):
answer = 0
available = ["aya", "ye", "woo", "ma"]
for b in babbling:
for a in available:
if a in b:
b = b.replace(a, ' ')
print(a, b)
b = b.strip()
if b == '':
answer += 1
return answer
- 2번에서 아예 공백이 아닌 스페이스(띄어쓰기 한 칸)을 주는 이유는 떨어져 있던 단어들이 붙으면서 발음이 가능해지는 것을 막기 위해서이다.
e.g. ay + ye + a
에서 ye
가 사라지면서 본래 ay
와 a
였던 것이 aya
가 되고 이 또한 발음이 가능해지기 때문이다.

from itertools import permutations
def solution(babbling):
answer = 0
available = ["aya", "ye", "woo", "ma"]
words = []
for i in range(1, 5):
for j in permutations(available, i):
words.append(''.join(j))
for b in babbling:
if b in words:
answer += 1
return answer
permutation
을 사용해 발음 가능 단어 개수별 순열 리스트를 모두 만들어 두었다.
babbling
의 단어들 중 순열 리스트에 있는 것은 발음이 가능하다는 의미이다.
