https://school.programmers.co.kr/learn/courses/30/lessons/72411
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
orders์์ ์ค๋ณต์ ํฌํจํ์ง ์๋ ์กฐํฉ์ผ๋ก course์ ํด๋นํ๋ ์๋งํผ์ ๋ฌธ์์ด์ ๋ฝ์๋ธ๋ค.
ํ์ด์ฌ์์ ์กฐํฉ์ ์ด์ฉํ๋ฉด ์์๋ฅผ ํํ๋ก ๋ฐํํ๊ธฐ ๋๋ฌธ์ ์ด๋ฅผ ๋ฆฌ์คํธ๋ก ๋ณํ ํ ์ ๋ ฌํด์ฃผ๊ณ ๋ฌธ์์ด๋ก ๋ณํํ๋ค.
๊ทธ๋ฆฌ๊ณ result ๋์ ๋๋ฆฌ์ {"๋ฌธ์์ด" : ํด๋น ๋ฌธ์์ด์ด ๋์จ ๊ฐ์}๋ก ์ ์ฅํด์คฌ๋ค.
result๋ฅผ ๋๋ฉด์ ์ต๋๊ฐ์ ๋ฝ์๋ธ๋ค.
๋จผ์ 2๋ช ์ด์์ ์๋์๊ฒ์ ์ฃผ๋ฌธ์ด ๋ค์ด์จ ๊ฑด๋ง ํฌํจํด์ผ ํ๋ฉฐ,
ํด๋น ๊ฐ์ด ์ต๋๊ฐ์ผ ๋๋ tmp ๋ฆฌ์คํธ๋ฅผ ๊ฐฑ์ ํด์ฃผ๊ณ ,
ํด๋น ๊ฐ์ด ์์ ๋์จ ์ต๋๊ฐ๊ณผ ๋์ผํ ๊ฐ์ผ ๋๋ tmp ๋ฆฌ์คํธ์ ์ถ๊ฐํด์คฌ๋ค.
answer ๋ฆฌ์คํธ์ tmp์ ์์๋ค์ ํ๋์ฉ ์ถ๊ฐํด์ฃผ๊ณ ,
๋ชจ๋ ์ถ๊ฐ๊ฐ ๋๋๋ฉด ๋ฆฌ์คํธ๋ฅผ ์ ๋ ฌํ ํ ๋ฆฌํดํด์ค๋ค.
# ํ๋ก๊ทธ๋๋จธ์ค 72411: ๋ฉ๋ด ๋ฆฌ๋ด์ผ (2021 KAKAO BLIND RECRUITMENT)
from itertools import combinations
def solution(orders, course):
answer = []
for i in course:
result = {}
for j in orders:
# orders์์ course๋ณ๋ก ํด๋น ์ ๋ฝ์๋
c = list(combinations(j, i))
for k in c:
# ์ํ๋ฒณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ ํ ๋ฌธ์์ด๋ก ๋ณํ
k = sorted(list(k))
s = ''.join(k)
# ๋์
๋๋ฆฌ์ ์ถ๊ฐ {๋ฌธ์์ด: ์นด์ดํธ}
if s in result:
result[s] += 1
else:
result[s] = 1
max_cnt = 0
tmp = []
for key in result:
if result[key] < 2: # 2๋ช
์ดํ์ ์๋์๊ฒ์ ์ฃผ๋ฌธ๋ ๊ตฌ์ฑ์ ํ๋ณด์ ๋ค์ด๊ฐ์ง ์์
continue
if result[key] > max_cnt: # ์ต๋๊ฐ ๊ฐฑ์
max_cnt = result[key]
tmp = [key]
elif result[key] == max_cnt: # ๋์ผํ ์ต๋๊ฐ ์ถ๊ฐ
tmp.append(key)
for i in tmp: # ์ ๋ต ๋ฐฐ์ด์ ์ถ๊ฐ
answer.append(i)
answer.sort() # ์ํ๋ฒณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ
return answer