이롭게 현명하게
[programmers - 120956] Lv0 옹알이 (1) / Python 본문
문제
풀이
코드 설명
코드
후기
[programmers - 120956] Lv0 옹알이 (1) / Python
[🔗문제🔗]
[제한사항]
[입출력 예시]
번호 | 입력 | 출력 |
1 | ["aya", "yee", "u", "maa", "wyeoo"] | 1 |
2 | ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"] | 3 |
[풀이]
아기는 ["aya", "ye", "woo", "ma"]만 발음할 수 있다.
["aya", "yee", "u", "maa", "wyeoo"]에서 aya는 발음할 수 있다.
yee는 ye는 발음할 수 있지만 e는 발음할 수 없다. 그러므로 yee는 발음할 수 없는 단어이다.
u는 발음할 수 없는 단어이다.
maa에서 ma는 발음할 수 있지만 a는 발음할 수 없다. 그러므로 maa는 발음할 수 없는 단어이다.
wyeoo는 발음할 수 없는 단어이다.
파이썬의 in 연산자를 사용하여 ["aya", "ye", "woo", "ma"]가 있는 단어를 찾아내었다.
찾은 단어에 replace를 사용하여 문자열 안의 특정한 값을 공백('')으로 치환하여 바꾸어 주었다.
치환 후 남은 문자가 존재한다면 발음을 할 수 없는 단어이다.
하지만 그렇게 되면 wyeoo와 같은 단어는 ye를 인식> 치환> woo가 되고, woo를 인식함 > 발음이 가능한 단어가 되어 무작정 replace를 사용하면 안 된다.
그래서 단어의 처음부터 확인을 해준 후 치환을 해주었다.
[코드 설명]
line = ["aya", "ye", "woo", "ma"] | 발음을 할 수 있는 단 |
for i in range(len(babbling)): | 매개변수 babbling 길이 만큼 반복 |
b = str(babbling[i]) | b에 babbling의 값을 문자열로 저장 |
for j in range(len(b)): | b의 길이 만큼 반복 발음할 수 있는 단어를 찾기 위해 |
if "aya" in b[0:3]: b = b.replace(b[0:3], "") |
만약 문자열 b 인덱스0~2까지에 "aya"가 있다면 문자열 b 0~2번 인덱스까지 공백으로 치환 후 b에 저장 |
elif "ye" in b[0:2]: b = b.replace(b[0:2], "") |
만약 문자열 b 인덱스0~1까지에 "ye"가 있다면 문자열 b 0~1번 인덱스까지 공백으로 치환 후 b에 저장 |
elif "woo" in b[0:3]: b = b.replace(b[0:3], "") |
만약 문자열 b 인덱스0~2까지에 "woo"가 있다면 문자열 b 0~2번 인덱스까지 공백으로 치환 후 b에 저장 |
elif "ma" in b[0:2]: b = b.replace(b[0:2], "") |
만약 문자열 b 인덱스0~1까지에 "ma"가 있다면 문자열 b 0~1번 인덱스까지 공백으로 치환 후 b에 저장 |
elif len(b) == 0: answer += 1 break |
만약 b의 문자열의 길이가 0이면 발음이 가능한단어이므로 answer의 값을 1 증가시킨 후 반복문을 종료 |
else: break |
맞는 조건문이 없다면 발음을 할 수 없는 단어이므로 반복문을 종료 |
<코드>
def solution(babbling):
answer = 0
line = ["aya", "ye", "woo", "ma"]
for i in range(len(babbling)):
b = str(babbling[i])
for j in range(len(b)):
if "aya" in b[0:3]:
b = b.replace(b[0:3], "")
elif "ye" in b[0:2]:
b = b.replace(b[0:2], "")
elif "woo" in b[0:3]:
b = b.replace(b[0:3], "")
elif "ma" in b[0:2]:
b = b.replace(b[0:2], "")
elif len(b) == 0:
answer += 1
break
else:
break
return answer
[후기]
프로그래머스 코딩테스트 입문 단계에서의 마지막 문제였다.
가장 마지막에 풀었고 정답률이 32%라 많이 어려운 문제라고 생각을 했고, 여태 풀었던 문제들 중에서 가장 많은 시간을 들여 풀 것이라고 예상을 했다.
하지만 생각 외로 쉬웠고 어떻게 풀어야 할지 머릿속에서 그려졌다.
문제를 풀면서 한 단계 성장한 것이 느껴져 기분이 너무 좋다.
잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊
댓글과 좋아요는 큰 힘이 됩니다!
'알고리즘 > programmers' 카테고리의 다른 글
[programmers - 120875] Lv0 평행 / Python (0) | 2023.08.25 |
---|---|
[programmers - 120876] Lv0 겹치는 선분의 길이/ Python (0) | 2023.08.24 |
[programmers - 120866] Lv0 안전지대 / Python (0) | 2023.08.19 |