728x90
나의 풀이
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for n in range(len(course)):
temp = []
for o in orders:
temp.extend(''.join(sorted(list(s))) for s in combinations(o, course[n]))
temp = Counter(temp).most_common()
for i in temp:
if temp[0][1] == i[1] > 1:
answer.append(i[0])
return sorted(answer)
라이브러리를 사용하지 않은 풀이
import sys
def dict_update(d, key):
if key in d:
d[key] += 1
else:
d[key] = 1
def order_update_rec(d, s, i, rst):
if i == len(s):
dict_update(d, rst)
else:
order_update_rec(d, s, i+1, rst)
order_update_rec(d, s, i+1, rst+s[i])
def solution(orders, course):
order_dict = {}
for order_i in range(len(orders)):
orders[order_i] = sorted(orders[order_i])
order_update_rec(order_dict, orders[order_i], 0, "")
result = []
max_v = [ 0 for _ in range(len(course)) ]
max_key = [ [] for _ in range(len(course)) ]
for key in order_dict:
for course_i, course_n in enumerate(course):
if len(key) == course_n:
if order_dict[key] > max_v[course_i]:
max_v[course_i] = order_dict[key]
max_key[course_i] = [key]
elif order_dict[key] == max_v[course_i]:
max_key[course_i].append(key)
for i, v in enumerate(max_v):
if v >= 2:
result += max_key[i]
return sorted(result)
반응형
'Coding Test > Programmers' 카테고리의 다른 글
[프로그래머스/파이썬] [1차] 뉴스 클러스터링 (0) | 2022.06.12 |
---|---|
[프로그래머스/파이썬] 괄호 변환 (0) | 2022.06.11 |
[프로그래머스/파이썬] 행렬 테두리 회전하기 (0) | 2022.06.10 |
[프로그래머스/파이썬] 짝지어 제거하기 (0) | 2022.06.10 |
[프로그래머스/파이썬] 멀쩡한 사각형 (0) | 2022.06.09 |