<로직 고민>
- 일단 babbling을 for문에 돌리고 가능한 발음을 또 for문을 돌려서 둘이 비교를 해봐야겠군
- babbling 안에 가능한 발음이 들어있으면 replace함수를 이용해서 그 발음을 숫자로 바꿔서 int(babbling) 했을 때 ValueError가 안 나오면 카운트를 1 올리고 나오면 넘어가고 이런 식으로...
def solution(babbling):
answer = 0
word = ["aya", "ye", "woo", "ma"]
for b in babbling:
for w in word:
if w in b:
b.replace(w, "1", 1)
try:
int(b)
answer += 1
except ValueError:
pass
return answer
print(solution(["aya", "yee", "u", "maa", "wyeoo"])) # 0
- 카운팅이 안 된다.....
- 찾아보니 replace 함수는 그냥 써서 원본값을 변경 시키는 게 아니라 새로운 변수에 담아야 한다고 한다..
...
bb = b.replace(w, "1", 1)
try:
int(bb)
...
print(solution(["aya", "yee", "u", "maa", "wyeoo"])) # 1
print(solution(["ayaye", "uuuma", "ye", "yemawoo", "ayaa"])) # 1
- 처음에 원하는 값 1이 나와서 좋다고 실행했는데 보니까 2번째 예시도 1이 나온다...뭐가 문젤까...
- 2번째 예시에 bb를 출력했더니
1ye
aya1
uuu1
1
1mawoo
yema1
ye1woo
1a
1
- 이렇게 나온다..babbling은 5개인데 왜 8개지..
- 아!!!!!!!!!!!!!!!!!!!!!!!!
- 같은 단어인데 1 위치가 다름..누적이 안 됨...
- 내가 생각한 건 해당하는 발음이 있으면 그 발음을 1로 만들고 그 상태에서 또 가능한 발음들이 돌고 해당하는 게 있으면 그것도 1해서 가능한 발음들로만 이루어진 단어는 결국 1이든 11이든 111이든 1111이든 숫자형식으로 변하니까 int에 씌우는 게 가능해져서 그렇게 가능한 것들을 카운트하는 거였다
- 새로운 변수 bb가 아닌 b에 replace를 씌워보자ㅏ.!!
...
b = b.replace(w, "1", 1)
print(b)
try:
int(b)
...
print(solution(["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]))
# 출력화면
# 1ye
# 11
# uuu1
# 1
# 1mawoo
# 1ma1
# 111
# 1a
# 3
- 성공이다....!!
<완성된 코드>
def solution(babbling):
answer = 0
word = ["aya", "ye", "woo", "ma"]
for b in babbling:
for w in word:
if w in b:
b = b.replace(w, "1", 1)
try:
int(b)
answer += 1
except ValueError:
pass
return answer
print(solution(["aya", "yee", "u", "maa", "wyeoo"])) # 1
print(solution(["ayaye", "uuuma", "ye", "yemawoo", "ayaa"])) # 3
<다른 사람 풀이>
- 천재풀이1
def solution(babbling):
c = 0
for b in babbling:
for w in [ "aya", "ye", "woo", "ma" ]:
if w * 2 not in b:
b = b.replace(w, ' ')
if len(b.strip()) == 0:
c += 1
return c
- 가장 처음 나온 풀이인데...이해가 안 간다
- w * 2는 뭐지 print 해봐야겠다
ayaaya
yeye
woowoo
mama
- 뭐지 그냥 2번씩 써지는 건데..왜 w * 2 를 w로 바꾸면 정답이 안 나오는거지
- 아..최대 1번씩만 들어간다고 했으니까 2번 들어가는 걸 제외시킨 건가...?
- 근데 1번씩만 들어간다는 건 테스트케이스의 조건 아닌가...
- 모르겠고 나도 처음에 이렇게 하려고 했었다
- 1이 아니라 공백으로 두고 공백을 없앴을 때 문자열 길이가 0이면 카운트 하도록
- 근데 그때 생각을 잘못한 게 ㅋㅋㅋ 공백으로 바꾸면 그냥 그 문자열이 사라진다고 생각을 했다
- 지금 생각하니 왜 그랬는지 모르겠는데 문자열 길이가 0이면 카운트 하도록..까지 생각했을 때 문자열 길이가 0? 그럼 데이터가 사라지는 건가....?? 라고 생각해서 생각을 바꿔가지고 1로 만든 다음 숫자 1로 바뀌면 카운트하는 걸로 바꾼 것이었다 ㅋㅋㅋㅋㅋ