https://school.programmers.co.kr/learn/courses/30/lessons/120956#
순열 조합으로 풀어 봄
틀린 풀이
from itertools import permutations
def solution(babb):
answer = 0
possible = ["aya", "ye", "woo", "ma"]
cand = set()
for i in range(1,5):
for comb in permutations(possible, i):
cand.add(''.join(comb))
# if ''.join(comb) in babb:
# answer +=1
for c in cand:
if c in babb:
answer += 1
return answer
permutations 한 거를 babb에 있는 지를 찾으면, 중복이 있을 수 있어서
babb이 permutations 조합에 들어있나를 찾아야 함을 알게 됨.
for target in targetlist:
if target in searchlist:
answer += 1
- 조합 리스트를 하나씩 babb에서 찾았을 때, case8에서 걸리는 걸 보고
=> set으로 자료구조 바꿔서 해봤는데 여전히 8에서 걸림 - babb에 중복이 있을 수 있어서 babb를 하나씩 잡고 조합 리스트에서 찾아야 오류에 안걸리나 보다
그래서 위에 조합 만들 때 한번에 찾는 거로는 안되는 구나
고친 풀이
from itertools import permutations
def solution(babb):
answer = 0
possible = ["aya", "ye", "woo", "ma"]
cand = set()
for i in range(1,5):
for comb in permutations(possible, i):
cand.add(''.join(comb))
for s in babbling:
if s in cand:
answer+=1
return answer
targetlist: permutation 조합리스트
searchlist: babbling 옹알이 가능한 지 검사할 리스트
둘의 어떤 걸 기준으로 for 문 돌릴 지, 잘 생각해야 되는 구나
찾아낸 예외 케이스
babbling = ['aya', 'aya']
'⚡️algorithm > accepted' 카테고리의 다른 글
[투포인터, 정렬된 배열의 구간합] 프로그래머스 lv2. 연속된 부분 수열의 합 (0) | 2023.04.13 |
---|---|
[합집합, 교집합, 병합 정렬] 프로그래머스 lv2. 뉴스클러스터링 (0) | 2023.02.26 |
[gcd, 최대공약수] 프로그래머스 lv 0. 유한소수 판별하기 (0) | 2023.02.12 |
[set, 집합, 기본] 프로그래머스. 외계어 사전 (0) | 2023.02.06 |
[DP] 백준 9184. 신나는 함수실행 (0) | 2023.02.03 |