문제

틀렸던 코드
def solution(babbling):
cnt = 0
can_speak = ['aya', 'ye', 'woo', 'ma']
#babbling에 있는 단어들을 탐색
for word in babbling :
#발음할 수 있는 단어들을 탐색
for s in can_speak :
if word.find(s) != -1 : #발음할 수 있는 단어가 있을시에
word = word.replace(s, "") # 특정 단어를 replace
if len(word) == 0 :
cnt += 1
return cnt
- 이렇게 로직을 짰었는데, 틀렸다. "wyeoo"의 경우에, woo가 연결되어있지 않지만 위의 코드를 사용하면 'ye'가 지워졌을때 'woo'가 붙어있는 것으로 인식되어 지워진다... 다른 방법을 찾아봐야겠다.
풀이
def solution(babbling):
cnt = 0
can_speak = ['aya', 'ye', 'woo', 'ma']
for word in babbling :
for s in can_speak :
if word.find(s) != -1 :
#공백 대신 1로 대체 후, 1을 추후에 제거
word = word.replace(s, "1")
word = word.replace("1", "")
if len(word) == 0 :
cnt += 1
return cnt
- 생각보다 고민을 오래 했는데, 쉬운 방법으로 해결이 되었다 ! 공백으로 초기화 해서 문제가 발생했다면, 다른 문자 (여기서는 1)로 초기화하고 추후에 그 문자를 제거하면서 위의 생겼던 오류를 해결할 수 있었다.
- 풀이 정리
- 발음할 수 있는 단어들 리스트로 초기화
- 입력으로 들어온 단어들을 쭉 반복
- 발음 할 수 있는 단어를 특정 다른 문자(여기서는 1) 로 replace
- 추후 문자 제거
- 발음할 수 있는 단어였다면, 111 이런 형식으로 문자열이 되어있다가 word.replace("1", "")에서 빈 문자열이 되었을 것이므로, word가 존재한다면 발음할 수 없는 단어이다.
- 따라서 word가 존재하지 않을 때 cnt + 1, cnt 반환
※Github
'Algorithm' 카테고리의 다른 글
| [프로그래머스] 햄버거 만들기 (1) | 2026.03.16 |
|---|---|
| [프로그래머스] 둘만의 암호 (1) | 2026.03.16 |
| [프로그래머스] 겹치는 선분의 길이 (0) | 2026.03.10 |
| [프로그래머스] 평행 (0) | 2026.03.10 |
| [LeetCode] 2327. Number of People Aware of a Secret (0) | 2026.03.03 |
