본문 바로가기
프로그래머스/Python

[프로그래머스] 옹알이 (2) - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 8. 30.
728x90
반응형

 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

2. 풀이과정

해당 문제는 발음할 수 있는 경우를 조합해 가능한 문자열의 개수를 구하는 문제이다.

문자열마다 발음할 수 있는 경우를 하나씩 판별하여 연속된 발음을 제외하고 발음할 수 있다면 해당 발음을 0으로 대체한다. 마지막에 문자열이 모두 0으로 대체되었다면 발음할 수 있는 문자열이다.

 

  1. 발음할 수 있는 경우를 저장한다. li = ["aya", "ye", "woo", "ma"]
  2. 문자열 배열을 하나씩 추출하며 판별한다. for i in babbling
  3. 발음할 수 있는 발음을 하나씩 추출하며 for j in li
  4. 만약 연속 발음이 추출한 문자열 배열에 존재하면 if (j * 2 in i)
  5. 발음을 연속으로 할 수 없기 때문에 판별을 종료한다. break
  6. 반면 추출한 문자열 배열에 연속 발음이 존재하지 않는다면 else
  7. 문자열 배열에 있는 발음을 0으로 대체한다. if (j in i): i = i.replace(j, '0' * len(j))
  8. 모든 발음에 대한 판정이 끝나면 바꾼 문자열 배열에 존재하는 '0'의 개수를 세어 모두 '0'으로 바뀌었다면 발음할 수 있는 문자열이다. if (i.count('0') == len(i)): answer += 1
반응형

3. 소스코드

def solution(babbling):
    answer = 0
    
    li = ["aya", "ye", "woo", "ma"]
    for i in babbling:
        for j in li:
            if (j * 2 in i):
                break
            else:
                if (j in i):
                    i = i.replace(j, '0' * len(j))

        if (i.count('0') == len(i)):
            answer += 1

    return answer
728x90
반응형