프로그래머스-옹알이(파이썬, python)

SA Jung·2022년 10월 31일
0

Programmers 문제 풀이

목록 보기
14/14
post-thumbnail

[문제링크]

옹알이(1) - https://school.programmers.co.kr/learn/courses/30/lessons/120956
옹알이(2) - https://school.programmers.co.kr/learn/courses/30/lessons/133499

[gitHub]

https://github.com/JungSangA/Algorithm_Study/blob/main/%EB%B0%B0%EC%97%B4/%EC%98%B9%EC%95%8C%EC%9D%B4.ipynb

옹알이

  • 문제 설명은 동일하다. 조카가 "aya", "ye", "woo", "ma" 밖에 발음을 하지 못하는데, 이 발음을 조합해서 만들 수 있는 발음을 찾으면 된다.
  • 다만, 옹알이(1)과 옹알이(2)가 다른점은 옹알이(2)에서는 중복해서 발음을 할 수 없다는 것!

1. 옹알이(1)

def solution(babbling):
   answer = 0
   baby = ["aya", "ye", "woo", "ma"]
   for i in babbling:
       tmp =""
       for idx,j in enumerate(i):
           # 옹알이 확인
           tmp += j
           # 2, 3개의 길이이며 발음 가능할 때
           if (len(tmp) == 2 or len(tmp) == 3) and tmp in baby:
               tmp =""
           # 길이가 4일때
           elif len(tmp) == 4:
               break
               
           if idx == len(i)-1 and tmp=="":
               answer+=1
   return answer
  • 조카가 할 수 있는 발음을 baby 리스트에 담아주고 babbling의 단어를 발음 할 수 있는지 여부를 파악하면 된다.
  • babbling의 마지막 idx를 알기위해서 enumerate의 내장함수를 썼다.
  • 2,3개의 길이일 때 발음할 수 있는지 여부를 확인하고, 마지막 idx이며 모두 발음을 했을 경우 answer를 1 증가해준다.

2. 옹알이(2)

def solution(babbling):
    baby = ["aya", "ye", "woo", "ma"]
    answer = 0
    for i in babbling:
        tmp, pre_tmp = "",""
        for idx, j in enumerate(i):
            # 옹알이 확인
            tmp += j
            # 2, 3개의 길이이며 발음 가능하고,
            # 연속적인 발음이 아닐경우
            if (len(tmp) == 2 or len(tmp) == 3) and tmp in baby and pre_tmp != tmp:
                pre_tmp = tmp 
                tmp =""
            # 길이가 4일때   
            elif len(tmp) == 4:
                break

            if idx == len(i)-1 and tmp =="":
                answer+=1
    return answer
  • 옹알이(1)과 비슷한 풀이이지만, 이전에 발음했던 단어를 연속해서 발음할 수 없다.
  • 따라서, pre_tmp라는 빈 변수를 생성하여, 직전에 발음했는지 여부만 판단하는 부분만 추가하여 풀 수 있다.
profile
Tomorrow will be better than yesterday :)

0개의 댓글