728x90
๋ฐ์ํ
"""
๊ฐ ์๋๋ค์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ด ๋ฌธ์์ด ํ์์ผ๋ก ๋ด๊ธด ๋ฐฐ์ด orders, "์ค์นดํผ"๊ฐ
์ถ๊ฐํ๊ณ ์ถ์ดํ๋ ์ฝ์ค์๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋จํ๋ฉ๋ด๋ค์ ๊ฐฏ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด course๊ฐ
๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, "์ค์นดํผ"๊ฐ ์๋ก ์ถ๊ฐํ๊ฒ ๋ ์ฝ์ค์๋ฆฌ์ ๋ฉ๋ด ๊ตฌ์ฑ์
๋ฌธ์์ด ํํ๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
"""
from itertools import combinations
from collections import Counter
def solution(orders, course):
_list = []
for order in orders:
for c in course:
_list += list(combinations(sorted(order), c))
_dict = {k: [2] for k in course}
for k, v in Counter([''.join(v) for v in _list]).items():
if _dict[len(k)][0] == v:
_dict[len(k)].append(k)
elif _dict[len(k)][0] < v:
_dict[len(k)] = [v, k]
answer = []
for v in _dict.values():
answer += v[1:]
return sorted(answer)
"""
์ฒ์์ ๋ฌธ์ ๋ฅผ ์๋ชป ์ดํดํ๋ค. course๊ฐ [2,3,4]์ผ๋ 2๊ฐ์ง ์ฝ์ค์๋ฆฌ๋ฅผ ์ ๋ถ ์ ๋์ค ์์๋๋ฐ
๊ทธ๊ฒ ์๋๋ผ 2๊ฐ์ง ์ฝ์ค์๋ฆฌ ์ค ๊ฐ์ฅ ๋ง์ด ์ ํ๋ฐ์ ๋ฉ๋ด๋ค์ด์๋ค.
'ABC', 'AB', 'AC', 'AB' ์ ๋ฉ๋ด๋ฅผ ์ฌ๋๋ค์ด ์ฃผ๋ฌธํ๋ค๋ฉด
'AB'์ ๋ฉ๋ด๊ฐ 3๋ฒ, 'AC'์ ๋ฉ๋ด๊ฐ 2๋ฒ ์ฃผ๋ฌธ๋์๊ธฐ ๋๋ฌธ์ 2๊ฐ์ง ๋ฉ๋ด์ ์ฝ์ค์๋ฆฌ๋ก๋
'AB'๊ฐ ์ ํ๋๋ ๊ฒ์ด๋ค. ํ์ง๋ง ์ฃผ๋ฌธํ ์ฌ๋์ด ๊ฐ๋ค๋ฉด ์ค๋ณต์ผ๋ก ์ฌ๋ผ๊ฐ๋ค.
'AB','AC'๊ฐ 3๋ฒ์ฉ ์ฃผ๋ฌธ๋์์ผ๋ฉด ๋๊ฐ์ง ์ฝ์ค์๋ฆฌ๊ฐ ๋๋ค ์ฌ๋ผ๊ฐ๋ค.
๊ทธ๋์ ํ๋ ค๊ณ ํ ๋ฐฉ์์ combinations ์ผ๋ก ์กฐํฉ์ ๋ง๋ค์ด ๋ธ๋ค.
๊ทธ๋ฆฌ๊ณ Counter๋ก ๋ง๋ ์กฐํฉ์ ๊ฐ์๋ฅผ ์ธ์ ๋์
๋๋ฆฌ๋ก ๋ง๋ ๋ค.
๊ทธ๋ฆฌ๊ณ ๊ฐ์ฅ ๋ง์ด ์ฃผ๋ฌธํ ๋ฉ๋ด๋ฅผ answer์ ๋ํ๋ค.
- 13~15 line
์ฃผ๋ฌธํ ๋ฉ๋ด๋ฅผ ์ํธํ์ฌ ์กฐํฉ์ ๋ง๋ ๋ค. ์ด๋ ์ฃผ์ธ์ด ์ํ ๋ฉ๋ด๊ฐ์ง์๋ก ๋ง๋ค์ด์ผํด์
์ด์คfor๋ฌธ์ผ๋ก combinations(sorted(order), c)์ผ๋ก c๊ฐ์ง์ ์กฐํฉ์ผ๋ก ๋ง๋ค์๋ค.
์ด๋ ์ํธ๋ฅผ ํ ์ด์ ๋ ABC, BCA๊ฐ ๊ฐ์ ๋ฉ๋ด์ด๊ธฐ ๋๋ฌธ์ด๋ค.
- 17 line
๋์
๋๋ฆฌ๋ฅผ course์ ๋ฉ๋ด๊ฐ์๋ฅผ key๊ฐ์ผ๋ก ๋ง๋ค์๋ค.
์ฌ๊ธฐ์ 2๊ฐ์ง์ ๋ฉ๋ด๋ค์ ๋ด๊ณ , 3๊ฐ์ง์ ๋ฉ๋ด๋ค์ ๋ด๊ณ , ... ์ผ๋ก ๋ด๋๋ค.
_dict = {k: [2] for k in course} ์์ [2]๋ก ํ ์ด์ ๋ ๊ฐ์ฅ ๋ง์ด ์ฃผ๋ฌธ๋์ด์ผ ํ๊ธฐ๋๋ฌธ์ด๋ค.
์ต์ 2๋ฒ์ด์ ์ฃผ๋ฌธ๋์ด์ผ ํ๊ณ , 3๋ฒ์ด์ ์ฃผ๋ฌธํ 2๊ฐ์ง๋ฉ๋ด๊ฐ ์ฌ๋ฌ๊ฐ์ผ์๋ ์๊ธฐ ๋๋ฌธ์ด๋ค.
- 18 line
for k, v in Counter([''.join(v) for v in _list]).items():
์ ๋ง๋ ๋ฆฌ์คํธ๋ฅผ [key: ๊ฐ์]์ ๋์
๋๋ฆฌ๋ก ๋ง๋ค์ด์ key, value์์ผ๋ก ๋ถ๋ฌ์จ๋ค.
- 19~22 line
if _dict[len(k)][0] == v:
๋ k์ ๊ธธ์ด๊ฐ ๋ฉ๋ด์ ๊ฐ์์ด๋ค. ๊ทธ๋ ๊ธฐ ๋๋ฌธ์ _dict[๋ฉ๋ด๊ฐ์][0] == v:๋ผ๊ณ ํด์๋๊ณ ,
_dict[๋ฉ๋ด๊ฐ์][0] ๋ ๊ธฐ๋ณธ๊ฐ์ด [2] ์ด๋ค.
์ด๊ฑด ๋ง์ฝ ๊ฐ์ ์ฃผ๋ฌธํ์๋ผ๋ฉด ์ ๋ต์ ๋ํด์ฃผ์ด์ผ ํ๊ธฐ ๋๋ฌธ์ด๋ค.
๊ทธ๋ฆฌ๊ณ ๋ง์ฝ ์ฃผ๋ฌธํ์๊ฐ ๋ ํฌ๋ค๋ฉด ์๋ก ๋ง๋ค์ด์ฃผ์ด์ผ ํ๋ค.
'AB','AB','AC','AC','AD','AD','AD' ๋ผ๊ณ ์์๋ฅผ ๋ค๋ฉด
Counter([''.join(v) for v in _list])๋ {'AB':2, 'AC':2, 'AD':3}์ด ๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ฒซ if๋ฌธ์์ _dict = { 2:[2,'AB']}์ด ๋๋ค.
๋ค์ for๋ฌธ์์ _dict = { 2: [2,'AB','AC'] }๊ฐ ๋๋ค. (๊ฐ์ ์ฃผ๋ฌธํ์์ด๊ธฐ๋๋ฌธ์)
๋ค์ for๋ฌธ์์ _dict = { 2: [3, 'AD'] } ๋ก ๋ฐ๋๋ค. (์ฃผ๋ฌธํ์๊ฐ ๋ ๋ง๊ธฐ ๋๋ฌธ์)
- 24~ line
์ด์ ๋น๊ตํ๊ธฐ ์ํด ์ผ๋ 2 or 3 .. ๋ฑ์ ์ฒซ๋ฒ์งธ ์์๋ฅผ ๋นผ๊ณ answer์ ๋ฃ์ด์ค๋ค.
๊ทธ๋ค์ sortํ์ฌ ๊ฐ์ ์ ๋ฌํ๋ค.
"""
728x90
๋ฐ์ํ
'๐ผ๐ก๐๐ค๐ง๐๐ฉ๐๐ข > ๐๐ง๐ค๐๐ง๐๐ข๐ข๐๐ง๐จ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค 'ํ ์ธ ํ์ฌ' ํ์ด์ฌ ํ์ด (0) | 2023.03.01 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ํด์ '๋ฒ ์คํธ์จ๋ฒ' ํ์ด์ฌ ํ์ด (0) | 2023.02.28 |
ํ๋ก๊ทธ๋๋จธ์ค ํด์ '์์ฅ' ํ์ด์ฌ ํ์ด (2) | 2023.02.26 |
ํ๋ก๊ทธ๋๋จธ์ค '๋์ถฉ ๋ง๋ ์ํ' ํ์ด์ฌ ํ์ด (0) | 2023.02.24 |
ํ๋ก๊ทธ๋๋จธ์ค 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ 'ํํ' ํ์ด์ฌ ํ์ด (0) | 2023.02.24 |
๋๊ธ