📌 파이썬 으로 풀이
📌 문제 링크 :
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
📌 문제 설명 :
머쓱이는 태어난 지 11개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음과 네 가지 발음을 조합해서 만들 수 있는 발음밖에 하지 못하고 연속해서 같은 발음을 하는 것을 어려워합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return하도록 solution 함수를 완성해주세요.
📌 제한 사항
- 1 ≤ babbling의 길이 ≤ 100
- 1 ≤ babbling[i]의 길이 ≤ 30
- 문자열은 알파벳 소문자로만 이루어져 있습니다.
📌 입출력 예

추측)
* 같은 발음 연달아 못함 ****
* babbling 배열을 for문으로 돌리고 각 인덱스마다 기본 발음들을 또 for문 while문으로 돌리면서 문자열을 잘라나가야 할까?
- 문자열에서 기본 발음이 있는지 일치 여부를 찾고 인덱스 값이 나오면 그 인덱스부터 기본 발음 개수 만큼 까지를 잘라내고, -1이 될때 까지 반복. > 발음이 하나가 여러개 나올 수 있기 때문에 flag를 사용해 while문으로 돌려야함
* 같은 발음 연달아 나오는건 어떻게 해야하나..? 일치하는 게 나타나면 이전 start_idx 값을 확인하고 그 때의 인덱스에서 지금 발음에 대한 길이만큼을 뺀 값을 비교해 일치하면 카운팅 안하고 break
- -1인데 문자열이 남아 있으면 발음 불가한 문자이므로 카운팅에서 제외
- -1인데 문자열이 비어있다면 카운팅 +1
- for문 종료 후 카운트 값 반환
소스코드)
* 1차) 실패 : 50점
def solution(babbling):
basic = ["aya", "ye", "woo", "ma"]
cnt = 0
for one in babbling:
i = 0
before_idx = -2
while i < len(basic) :
if len(one) == 0 :
cnt += 1
break
start_idx = one.find(basic[i])
if start_idx != -1 :
before_len = len(one)
one = one.replace(basic[i], "", 1)
if before_len - len(basic[i]) == len(one) and before_idx == start_idx :
break
before_idx = start_idx
else:
i += 1
before_idx = -2
return cnt
* 2차) 성공 : 문자를 지우면 붙어서 새로 기본 옹알이 발음처럼 되는 것을 방지 처리
def solution(babbling):
basic = ["aya", "ye", "woo", "ma"]
cnt = 0
for one in babbling:
i = 0
if one.isspace() :
continue
while i < len(basic) :
if basic[i] * 2 in one:
break
if one.isspace() :
cnt += 1
break
start_idx = one.find(basic[i])
if start_idx != -1 :
one = one.replace(basic[i], " ", 1)
else:
i += 1
return cnt
리뷰)
생각지 못한 예시를 들자면 "ayaywooe" 에서 aya 나 woo가 지워지고 나면 y, e가 둘다 발음 못하는 건데 ye가 붙어버려 발음이 되는 경우를 생각지 못했다. 이 부분을 방지하기 위해 삭제하고나서 공백처리하고 전부 공백일때 카운트를 하는 방식으로 변경했더니 통과했다!!!
'Coding Test > Algorithm' 카테고리의 다른 글
| Programmers] 둘만의 암호 (0) | 2023.02.21 |
|---|---|
| Programmers] 콜라 문제 (0) | 2023.02.13 |
| Programmers] 햄버거 만들기 (0) | 2023.02.13 |
| Programmers] 푸드 파이트 대회 (0) | 2023.02.13 |
| Programmers] 과일 장수 (1) | 2023.02.13 |




