728x90
반응형
Description
머쓱이는 태어난 지 6개월 된 조카를 돌보고 있습니다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 문자열 배열 babbling이 매개변수로 주어질 때, 머쓱이의 조카가 발음할 수 있는 단어의 개수를 return 하도록 solution 함수를 완성해주세요.
입출력 예시
입력: ["aya", "yee", "u", "maa", "wyeoo"]
결과: 1
입력: ["ayaye", "uuuma", "ye", "yemawoo", "ayaa"]
결과: 3
풀이 방법
정말 단순하게 풀었다. 조카는 아직 "aya", "ye", "woo", "ma" 네 가지 발음을 최대 한 번씩 사용해 조합한(이어 붙인) 발음밖에 하지 못합니다. 이 문장에서 최대 한 번씩이라고 했으니 다음과 같은 요소만 있으면 풀 수 있을거라고 접근했다.
- "aya", "ye", "woo", "ma" 를 갖는 List
- "aya", "ye", "woo", "ma" 의 모든 조합을 고려한 List
- "aya", "ye", "woo", "ma" 가 하나씩 더해진 형태 ("aya"라고 하면 "ayaaya")의 List
1번은 문제에서 주어진 List 그대로이기 때문에 딱히 고려할 건 없어보이고, 3번은 각 요소에 두 번 더해진 형태이기 때문에 List의 최대 길이가 8이 되기에 딱히 문제 되지 않을 것이라 판단했다. 문제는 2번인데 모든 조합을 고려한 List로 확장한다고 하면 Memory 제약이 걸리지 않을까 싶었는데 문제없이 통과했다.
Code
from itertools import permutations
def solution(babbling):
enable = ["aya", "ye", "woo", "ma"]
enable_combination = []
for idx in range(0, len(enable) + 1):
enable_combinations = permutations(enable, idx)
sep = ''
for comb in enable_combinations:
if sep.join(comb):
enable_combination.append(sep.join(comb))
enable.extend(enable_combination)
enable_combination_repeat = [bab * 2 for bab in enable]
enable.extend(enable_combination_repeat)
result = 0
for token in babbling:
if token in enable:
result += 1
return result
728x90
반응형
'Algorithm > Programmers' 카테고리의 다른 글
[Programmers] 평행 (0) | 2022.12.12 |
---|---|
[Programmers] 7의 갯수 구하기 (0) | 2022.12.08 |
[Programmers] 옹알이 - 다시 풀어보기 (0) | 2022.12.07 |
[Programmers] 1주차_부족한 금액 계산하기 (0) | 2021.09.07 |
[Programmers] 2021 카카오 채용연계형 인턴십숫자 > 문자열과 영단어도움말 (0) | 2021.07.14 |