이롭게 현명하게

[programmers - 120956] Lv0 옹알이 (1) / Python 본문

알고리즘/programmers

[programmers - 120956] Lv0 옹알이 (1) / Python

dev_y.h 2023. 8. 28. 18:41
728x90
반응형

 


문제

풀이

코드 설명

코드

후기


 

[programmers - 120956] Lv0  옹알이 (1) / Python


[🔗문제🔗]

[제한사항]

[입출력 예시]

번호 입력 출력
1 ["aya", "yee", "u", "maa", "wyeoo"]
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%라 많이 어려운 문제라고 생각을 했고, 여태 풀었던 문제들 중에서 가장 많은 시간을 들여 풀 것이라고 예상을 했다.

하지만 생각 외로 쉬웠고 어떻게 풀어야 할지 머릿속에서 그려졌다.

문제를 풀면서 한 단계 성장한 것이 느껴져 기분이 너무 좋다.


잘못된 정보는 댓글에 남겨주시면 감사하겠습니다!😊

댓글과 좋아요는 큰 힘이 됩니다!

728x90
반응형
Comments