ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 옹알이 (2)
    코딩테스트 연습 2023. 11. 18. 10:44

    내가 생각한 방식으로 풀려고 하니까 for문이 너무 많이 중첩된다..

    그래서 다른 사람 풀이를 참고를 해봤다.

    일단 옹알이 (1) 코드를 확인을 해봤고, 옹알이 (2) 에서는 추가 조건이 있기 때문에

    그건 옹알이 (1) 코드에 내가 추가를 하는 걸로!

     

    문제 설명

    제한사항

    입출력 예 및 설명

    문제 풀이

    
    
    def solution(babbling):
        answer = 0
        
        # 연속은 불가
        옹알이list = ["aya", "ye", "woo", "ma"]
        
        for word in babbling: # 만들고 싶은 단어
            
            check=True        # 옹알이로 단어를 완성할 수 있는지 확인하는 변수. 단어 완성할 수 없다면 False로 넣어줄 예정
            
            for 옹알이 in 옹알이list:
            	# ↓ 옹알이를 연속해서 사용할 수 없기 때문에 옹알이*2가 만들고자 하는 단어에 있으면 안된다
                if (옹알이 in word) and (옹알이*2 not in word): 
                
                    word = word.replace(옹알이, '*')  # 옹알이가 단어에 포함된다면 '*'로 바꾸기
            
            # '*'로 replace된 단어를 하나씩 돌면서 단어의 모든 문자가 '*'로 바꼈다면 옹알이로 만들 수 있는 단어, 
            # '*'가 아닌 문자가 있다면 옹알이로 표현할 수 없는 단어! check변수를 False라고 바꿔준다. 
            for w in word:   
                if w != '*':
                    check=False
            
            if check:  # check가 True라면
                answer += 1
            
        return answer

    채점 결과

     


    다른 사람 풀이 

    def solution(babbling):
        count = 0
    
        for b in babbling:
            if "ayaaya" in b or "yeye" in b or "woowoo" in b or "mama" in b: # 연속 불가능 조건
                continue   
            # ↓ not이 중요! 마지막에 ' ' 을 ''로 바꿔줬을 때 b가 ''이면 False이기 때문에 not Fasle여서 True가 된다.
            # 그래서 결론은, 단어가 ''일 때(옹알이로 표현이 가능할 때) count += 1
            if not b.replace("aya", " ").replace("ye", " ").replace("woo", " ").replace("ma", " ").replace(" ", ""):
                count += 1
    
        return count

    다른 사람 풀이 채점 결과

     

    문제 출처 : 프로그래머스

    '코딩테스트 연습' 카테고리의 다른 글

    뒤에 있는 큰 수 찾기  (2) 2023.11.29
    명예의 전당 (1)  (0) 2023.11.27
    문자열 나누기  (0) 2023.11.17
    개인정보 수집 유효기간(2023 KAKAO BLIND RECRUITMENT)  (1) 2023.11.16
    카드 뭉치  (0) 2023.11.15
Designed by Tistory.