https://programmers.co.kr/learn/courses/30/lessons/72411
풀이
되게 비효율적인 전탐색 방법 밖에 떠오르지 않았다.
파이썬 모듈을 잘 모르다 보니 분명 내가 생각하는 조합 방법이 하드코딩일 것 같았다.
백퍼 이런 기능을 제공해주는 모듈이 있을 것 같았다.
어떤 모듈을 사용하는지 검색해 참고해보았다. 풀이는 덜 보려고 노력함 ( https://dev-note-97.tistory.com/128 )
from itertools import combinations
from collections import Counter
collections는 써본 적 있었다.
from collections import Counter
Counter('hello world') # Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})
이런 형태로 리턴해주는 듯 하다. (https://www.daleseo.com/python-collections-counter/)
itertools.combinations 도 언젠가 써본 듯 했던 것 같기도 하다.
import itertools
chars = ['A', 'B', 'C']
p = itertools.permutations(chars, 2) # 순열
c = itertools.combinations(chars, 2) # 조합
print(list(p))
print(list(c))
#[('A', 'B'), ('A', 'C'), ('B', 'A'), ('B', 'C'), ('C', 'A'), ('C', 'B')]
#[('A', 'B'), ('A', 'C'), ('B', 'C')]
(https://itholic.github.io/python-combination-permutation/)
내 풀이
from itertools import combinations
from collections import Counter
def solution(orders, course):
menus = []
for c in course:
for o in orders:
menus += list(combinations(o, c))
results = list(map(''.join, menus))
count = Counter(results)
print(count)
# Counter({'XY': 2, 'XZ': 1, 'YZ': 1, 'XW': 1, 'WY': 1, 'WX': 1, 'WA': 1, 'XA': 1, 'XYZ': 1, 'XWY': 1, 'WXA': 1})
return []
카운터 모듈로 총 몇 개의 조합이 몇 번 나왔는지까지는 구했다 최대 조합의 개수 꺼내는 중
from itertools import combinations
from collections import Counter
def solution(orders, course):
answers = []
for c in course:
menus = []
for o in orders:
menus += list(combinations(sorted(o), c)) // sorted안해주면 counter에서 같은 값으로 쳐주지 않는듯
results = list(map(''.join, menus))
count = Counter(results)
if len(count) != 0 and max(count.values()) != 1:
for i in count:
if count[i] == max(count.values()):
answers.append(i)
return sorted(answers)
위처럼 하면 두개, 세개 등 개수가 다른 조합이 섞여 최대값을 뽑기 어려워 답을 저장하고 비워버리는 방식으로 변경했다.
순열이다보니까 xy , yx를 같은 것으로 치는데 counter에서는 다른 것으로 쳐서 테스트케이스 3번에서 틀리게 나왔다.
sorted(o)를 걸어줘서 그럴 일이 없도록 했다. 위 링크의 블로그를 많이 참고했다.
'알고리즘 스터디 2021.07~' 카테고리의 다른 글
[프로그래머스] 2018 카카오 블라인드 - [1차] 추석 트래픽 (0) | 2021.07.16 |
---|---|
[프로그래머스] 2019 카카오 겨울인턴 - 크레인 인형뽑기 (2) | 2021.07.16 |
[프로그래머스] 2020 카카오 문자열 압축 (0) | 2021.07.11 |
[프로그래머스] 2019 카카오 오픈채팅방 (1) | 2021.07.08 |
[프로그래머스] 2021 카카오 신규 아이디 (0) | 2021.07.04 |