๋ฌธ์ ์ค๋ช
๋ ์คํ ๋์ ์ด์ํ๋ ์ค์นดํผ๋ ์ฝ๋ก๋19๋ก ์ธํ ๋ถ๊ฒฝ๊ธฐ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๋ฉ๋ด๋ฅผ ์๋ก ๊ตฌ์ฑํ๋ ค๊ณ ๊ณ ๋ฏผํ๊ณ ์์ต๋๋ค.
๊ธฐ์กด์๋ ๋จํ์ผ๋ก๋ง ์ ๊ณตํ๋ ๋ฉ๋ด๋ฅผ ์กฐํฉํด์ ์ฝ์ค์๋ฆฌ ํํ๋ก ์ฌ๊ตฌ์ฑํด์ ์๋ก์ด ๋ฉ๋ด๋ฅผ ์ ๊ณตํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๋ค ๋จํ๋ฉ๋ด๋ค์ ์กฐํฉํด์ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๋ฉด ์ข์ ์ง ๊ณ ๋ฏผํ๋ "์ค์นดํผ"๋ ์ด์ ์ ๊ฐ ์๋๋ค์ด ์ฃผ๋ฌธํ ๋ ๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๊ธฐ๋ก ํ์ต๋๋ค.
๋จ, ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ ์ต์ 2๊ฐ์ง ์ด์์ ๋จํ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๋ ค๊ณ ํฉ๋๋ค. ๋ํ, ์ต์ 2๋ช
์ด์์ ์๋์ผ๋ก๋ถํฐ ์ฃผ๋ฌธ๋ ๋จํ๋ฉ๋ด ์กฐํฉ์ ๋ํด์๋ง ์ฝ์ค์๋ฆฌ ๋ฉ๋ด ํ๋ณด์ ํฌํจํ๊ธฐ๋ก ํ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋ 6๋ช
์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ ์กฐํฉ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด,
(๊ฐ ์๋์ ๋จํ๋ฉ๋ด๋ฅผ 2๊ฐ ์ด์ ์ฃผ๋ฌธํด์ผ ํ๋ฉฐ, ๊ฐ ๋จํ๋ฉ๋ด๋ A ~ Z์ ์ํ๋ฒณ ๋๋ฌธ์๋ก ํ๊ธฐํฉ๋๋ค.)
์๋ | ์๋ ๋ฒํธ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด ์กฐํฉ |
1๋ฒ ์๋ | A, B, C, F, G |
2๋ฒ ์๋ | A, C |
3๋ฒ ์๋ | C, D, E |
4๋ฒ ์๋ | A, C, D, E |
5๋ฒ ์๋ | B, C, F, G |
6๋ฒ ์๋ | A, C, D, E, H |
๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธ๋ ๋จํ๋ฉ๋ด ์กฐํฉ์ ๋ฐ๋ผ "์ค์นดํผ"๊ฐ ๋ง๋ค๊ฒ ๋ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด ๊ตฌ์ฑ ํ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ฝ์ค | ์ข ๋ฅ๋ฉ๋ด | ๊ตฌ์ฑ์ค๋ช |
์๋ฆฌ 2๊ฐ ์ฝ์ค | A, C | 1๋ฒ, 2๋ฒ, 4๋ฒ, 6๋ฒ ์๋์ผ๋ก๋ถํฐ ์ด 4๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค. |
์๋ฆฌ 3๊ฐ ์ฝ์ค | C, D, E | 3๋ฒ, 4๋ฒ, 6๋ฒ ์๋์ผ๋ก๋ถํฐ ์ด 3๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค. |
์๋ฆฌ 4๊ฐ ์ฝ์ค | B, C, F, G | 1๋ฒ, 5๋ฒ ์๋์ผ๋ก๋ถํฐ ์ด 2๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค. |
์๋ฆฌ 4๊ฐ ์ฝ์ค | A, C, D, E | 4๋ฒ, 6๋ฒ ์๋์ผ๋ก๋ถํฐ ์ด 2๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค. |
๋ฌธ์
๊ฐ ์๋๋ค์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ด ๋ฌธ์์ด ํ์์ผ๋ก ๋ด๊ธด ๋ฐฐ์ด orders, "์ค์นดํผ"๊ฐ ์ถ๊ฐํ๊ณ ์ถ์ดํ๋ ์ฝ์ค์๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋จํ๋ฉ๋ด๋ค์ ๊ฐฏ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด course๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, "์ค์นดํผ"๊ฐ ์๋ก ์ถ๊ฐํ๊ฒ ๋ ์ฝ์ค์๋ฆฌ์ ๋ฉ๋ด ๊ตฌ์ฑ์ ๋ฌธ์์ด ํํ๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
์ ํ์ฌํญ
- orders ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 2 ์ด์ 20 ์ดํ์ ๋๋ค.
- orders ๋ฐฐ์ด์ ๊ฐ ์์๋ ํฌ๊ธฐ๊ฐ 2 ์ด์ 10 ์ดํ์ธ ๋ฌธ์์ด์
๋๋ค.
- ๊ฐ ๋ฌธ์์ด์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๊ฐ ๋ฌธ์์ด์๋ ๊ฐ์ ์ํ๋ฒณ์ด ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- course ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 10 ์ดํ์
๋๋ค.
- course ๋ฐฐ์ด์ ๊ฐ ์์๋ 2 ์ด์ 10 ์ดํ์ธ ์์ฐ์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์์ต๋๋ค.
- course ๋ฐฐ์ด์๋ ๊ฐ์ ๊ฐ์ด ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- ์ ๋ต์ ๊ฐ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด์ ๊ตฌ์ฑ์ ๋ฌธ์์ด ํ์์ผ๋ก ๋ฐฐ์ด์ ๋ด์ ์ฌ์ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ return ํด์ฃผ์ธ์.
- ๋ฐฐ์ด์ ๊ฐ ์์์ ์ ์ฅ๋ ๋ฌธ์์ด ๋ํ ์ํ๋ฒณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์ผ ํฉ๋๋ค.
- ๋ง์ฝ ๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธ๋ ๋ฉ๋ด ๊ตฌ์ฑ์ด ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด, ๋ชจ๋ ๋ฐฐ์ด์ ๋ด์ return ํ๋ฉด ๋ฉ๋๋ค.
- orders์ course ๋งค๊ฐ๋ณ์๋ return ํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 1 ์ด์์ด ๋๋๋ก ์ฃผ์ด์ง๋๋ค.
์ ๋ต
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for c in course: # c = ์ฝ์ค ์๋ฆฌ ๊ฐ์
combi = [] # combi = ์๋ฆฌ ์กฐํฉ
cnt = [] # cnt = ์กฐํฉ ๋น ์ฃผ๋ฌธ ํ์
for o in orders: # o = ์ฃผ๋ฌธ
if len(o) >= c: # ์ฃผ๋ฌธ ์๋ฆฌ ๊ฐ์๊ฐ ์ฝ์ค ์๋ฆฌ ๊ฐ์๋ณด๋ค ๋ง์ ๋๋ง ์คํ
combi += list(map(''.join, combinations(sorted(o), c)))
cnt = Counter(combi).most_common() # cnt์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅ
if cnt and cnt[0][1] > 1:
for k, v in cnt:
if v == cnt[0][1]:
answer.append(k)
return sorted(answer)
์ฝ์ค ์๋ ๊ฐ์๋งํผ ์ฃผ๋ฌธ๋ณ๋ก ์กฐํฉํ์ฌ ๊ฐ์ฅ ๋ง์ด ๋์จ ์กฐํฉ์ ์ผ๋ค.
์ด ๋ combi์ ์ค๋ณต์ ํฌํจํ์ฌ ์๋ฆฌ์ ์กฐํฉ์ ์ ์ฅํ ๋ค์,
๋ชจ๋ ์ฃผ๋ฌธ์ ๋ค ํ์ธํ ํ Counter๋ฅผ ์ด์ฉํ์ฌ cnt์ ๊ฐ ์กฐํฉ์ด ๋ช ๋ฒ ๋์๋์ง ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅํ๋ค.
๋ด๋ฆผ์ฐจ์์ผ๋ก ์ ์ฅํ๊ธฐ ๋๋ฌธ์ cnt[0][1]๋ ์ต๋๊ฐ์ด ๋๋ฏ๋ก
์ต๋๊ฐ์ด 1๋ณด๋ค ํด ๊ฒฝ์ฐ ์ต๋๊ฐ๊ณผ ๊ฐ์ ๋น๋์์ ์กฐํฉ์ answer์ ์ ์ฅํ๋ค.
'๐์๊ณ ๋ฆฌ์ฆ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์คํ/ํ : ๋ค๋ฆฌ๋ฅผ ์ง๋๋ ํธ๋ญ (0) | 2021.07.20 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์คํ/ํ : ํ๋ฆฐํฐ (0) | 2021.07.19 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] 2019 ์นด์นด์ค ๊ฐ๋ฐ์ ๊ฒจ์ธ ์ธํด์ญ : ํํ (0) | 2021.07.02 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์ ๋ ฌ : H-index (0) | 2021.07.01 |
[ํ๋ก๊ทธ๋๋จธ์ค/python] ์ ๋ ฌ : K๋ฒ์งธ ์ (0) | 2021.07.01 |