⚡️algorithm/accepted
[프로그래머스] lv.0 옹알이(1) - 반복문 주의
남남이루
2023. 2. 19. 20:10
https://school.programmers.co.kr/learn/courses/30/lessons/120956#
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
순열 조합으로 풀어 봄
틀린 풀이
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']