코드
def solution(babbling):
answer = 0
can = ['aya', 'ye', 'woo', 'ma']
for bab in babbling: # babbling의 단어 하나씩 확인
for c in can:
if c * 2 not in bab: # 연속으로 나오지 않으면 공백(' ')으로 대체
bab = bab.replace(c, ' ')
if bab.isspace(): # 공백으로만 이루어져 있으면 answer+1
answer += 1
return answer
옹알이(1) 문제에서는 permutations 사용해서 정말 주먹구구식으로 풀었었는데 그 방법으로는 옹알이(2) 문제를 해결할 수 없었다.
그래서 다른 방법을 생각하게 되었다.
발음할 수 있는 단어들을 공백(' ')으로 대체하는 것이다. 그럼 대체 후 남는 문자들이 존재하면 해당 단어는 발음할 수 없는 단어일 것이다.
이 과정을 코드를 통해 작성하면 다음과 같다.
for bab in babbling: # babbling의 단어 하나씩 확인
for c in can:
if c * 2 not in bab: # 연속으로 나오지 않으면 공백(' ')으로 대체
bab = bab.replace(c, ' ')
c *2가 bab에 존재하는지 확인함과 동시에 공백을 ''이 아닌 ' '으로 대체해야 한다.
문제에서 연속으로 발음할 수는 없다고 명시했기 때문에 c * 2가 존재하지 않을 때만 공백으로 대체해야 한다.
또한 이때 공백은 ''이 아닌 ' '이어야 한다. 만약 ''이면 다음과 같은 오류가 발생한다.
예를 들어 'yayae'에서 'aya'는 발음 가능하므로 ''으로 대체하면 'ye'가 남는다. 'ye' 또한 ''으로 대체하면 최종적으로는 ''이 남게 된다.
'yayae'는 발음이 불가능한 단어이다. 하지만 ''으로 대체하면 위와 같은 오류가 발생해 발음 가능한 단어로 판별하게 된다.
따라서 ''이 아닌 ' '으로 대체해 'yayae'는 'y e'가 되어 발음 불가능한 단어임을 확실하게 판별할 수 있다.
최종적으로 발음이 가능한 단어는 모두 공백으로 대체되었을 것이다.
그러므로 isspace() 함수를 사용해 모든 문자열이 공백인지 확인하여 모두 공백이면 answer+1을 통해 발음 가능한 단어의 카운트를 세준다.
반응형