코딩테스트/프로그래머스
[Programmers][Python] 옹알이 (1)
PERIR
2023. 3. 8. 13:49
문제 링크:https://school.programmers.co.kr/learn/courses/30/lessons/120956
처음 작성한 코드
- 단어 안에 옹알이가 최대 한 번씩만 들어있는 것을 이용해 단어마다 옹알이의 여부를 체크했다.
- 리스트 babbling의 요소 문자열에서 옹알이가 들어있는지 체크했다.
- 만약 옹알이가 있다면 그 옹알이의 문자열 길이를 카운트해 준다.
- 문자열의 길이와 카운트된 옹알이의 문자열 길이의 합을 비교해서 일치하면 조카가 발음할 수 있는 단어가 된다.
def solution(babbling):
wrd_lst3 = ["aya", "woo"]
wrd_lst2 = ["ye", "ma"]
answer = 0
for bab in babbling:
len_cnt = 0
for wrd in wrd_lst3:
if wrd in bab:
len_cnt += 3
for wrd in wrd_lst2:
if wrd in bab:
len_cnt += 2
if len(bab) == len_cnt:
answer += 1
return answer
다른 코드
[코드1]
- replace 함수를 이용한 풀이 방법이다.
- 단어에서 옹알이가 있다면 ' ' 공백 문자열을 추가하여 제거해 준다.
- ' ' 공백문자열을 사용하는 것은 '' 빈문자열 사용 시 'wyeoo' 같은 예시에서 'ye'가 제거되면 'woo'로 문자열이 변환될 수 있기 때문이다. ' ' 공백문자열로 문자열이 바로 붙지 않게 해 준다.
- replace 함수 뒤에 인자 1은 한 번만 변환을 하게 하는 의미로, 옹알이가 한번만 변환되게 해 준다.
- 변환을 마친 후에 strip 함수를 이용하여 공백을 모두 제거해 준 뒤 길이를 체크해 주자
- 길이가 0이라면 기존에 있던 문자열은 옹알이로만 이루어졌다는 것이 되므로 조건에 맞는 케이스가 된다.
def solution(babbling):
answer = 0
for b in babbling:
for wrd in ["aya", "ye", "woo", "ma"]:
b = b.replace(wrd, ' ', 1)
if len(b.strip()) == 0:
answer += 1
return answer
사실 처음에 replace를 이용하였는데, 공백문자열을 사용할 생각을 못해서 코드를 새로 작성했었다..