๐ ๋ฌธ์ ์ค๋ช
๋ ์คํ ๋์ ์ด์ํ๋ ์ค์นดํผ๋ ์ฝ๋ก๋19๋ก ์ธํ ๋ถ๊ฒฝ๊ธฐ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๋ฉ๋ด๋ฅผ ์๋ก ๊ตฌ์ฑํ๋ ค๊ณ ๊ณ ๋ฏผํ๊ณ ์์ต๋๋ค.
๊ธฐ์กด์๋ ๋จํ์ผ๋ก๋ง ์ ๊ณตํ๋ ๋ฉ๋ด๋ฅผ ์กฐํฉํด์ ์ฝ์ค์๋ฆฌ ํํ๋ก ์ฌ๊ตฌ์ฑํด์ ์๋ก์ด ๋ฉ๋ด๋ฅผ ์ ๊ณตํ๊ธฐ๋ก ๊ฒฐ์ ํ์ต๋๋ค. ์ด๋ค ๋จํ๋ฉ๋ด๋ค์ ์กฐํฉํด์ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๋ฉด ์ข์ ์ง ๊ณ ๋ฏผํ๋ "์ค์นดํผ"๋ ์ด์ ์ ๊ฐ ์๋๋ค์ด ์ฃผ๋ฌธํ ๋ ๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๊ธฐ๋ก ํ์ต๋๋ค.
๋จ, ์ฝ์ค์๋ฆฌ ๋ฉ๋ด๋ ์ต์ 2๊ฐ์ง ์ด์์ ๋จํ๋ฉ๋ด๋ก ๊ตฌ์ฑํ๋ ค๊ณ ํฉ๋๋ค. ๋ํ, ์ต์ 2๋ช
์ด์์ ์๋์ผ๋ก๋ถํฐ ์ฃผ๋ฌธ๋ ๋จํ๋ฉ๋ด ์กฐํฉ์ ๋ํด์๋ง ์ฝ์ค์๋ฆฌ ๋ฉ๋ด ํ๋ณด์ ํฌํจํ๊ธฐ๋ก ํ์ต๋๋ค.
์๋ฅผ ๋ค์ด, ์๋ 6๋ช
์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ ์กฐํฉ์ด ๋ค์๊ณผ ๊ฐ๋ค๋ฉด,
(๊ฐ ์๋์ ๋จํ๋ฉ๋ด๋ฅผ 2๊ฐ ์ด์ ์ฃผ๋ฌธํด์ผ ํ๋ฉฐ, ๊ฐ ๋จํ๋ฉ๋ด๋ A ~ Z์ ์ํ๋ฒณ ๋๋ฌธ์๋ก ํ๊ธฐํฉ๋๋ค.)
๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธ๋ ๋จํ๋ฉ๋ด ์กฐํฉ์ ๋ฐ๋ผ "์ค์นดํผ"๊ฐ ๋ง๋ค๊ฒ ๋ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด ๊ตฌ์ฑ ํ๋ณด๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
[๋ฌธ์ ]
๊ฐ ์๋๋ค์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ด ๋ฌธ์์ด ํ์์ผ๋ก ๋ด๊ธด ๋ฐฐ์ด orders, "์ค์นดํผ"๊ฐ ์ถ๊ฐํ๊ณ ์ถ์ดํ๋ ์ฝ์ค์๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋จํ๋ฉ๋ด๋ค์ ๊ฐฏ์๊ฐ ๋ด๊ธด ๋ฐฐ์ด course๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง ๋, "์ค์นดํผ"๊ฐ ์๋ก ์ถ๊ฐํ๊ฒ ๋ ์ฝ์ค์๋ฆฌ์ ๋ฉ๋ด ๊ตฌ์ฑ์ ๋ฌธ์์ด ํํ๋ก ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
[์ ํ์ฌํญ]
- orders ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 2 ์ด์ 20 ์ดํ์ ๋๋ค.
- orders ๋ฐฐ์ด์ ๊ฐ ์์๋ ํฌ๊ธฐ๊ฐ 2 ์ด์ 10 ์ดํ์ธ ๋ฌธ์์ด์
๋๋ค.
- ๊ฐ ๋ฌธ์์ด์ ์ํ๋ฒณ ๋๋ฌธ์๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
- ๊ฐ ๋ฌธ์์ด์๋ ๊ฐ์ ์ํ๋ฒณ์ด ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- course ๋ฐฐ์ด์ ํฌ๊ธฐ๋ 1 ์ด์ 10 ์ดํ์
๋๋ค.
- course ๋ฐฐ์ด์ ๊ฐ ์์๋ 2 ์ด์ 10 ์ดํ์ธ ์์ฐ์๊ฐ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด ์์ต๋๋ค.
- course ๋ฐฐ์ด์๋ ๊ฐ์ ๊ฐ์ด ์ค๋ณตํด์ ๋ค์ด์์ง ์์ต๋๋ค.
- ์ ๋ต์ ๊ฐ ์ฝ์ค์๋ฆฌ ๋ฉ๋ด์ ๊ตฌ์ฑ์ ๋ฌธ์์ด ํ์์ผ๋ก ๋ฐฐ์ด์ ๋ด์ ์ฌ์ ์์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํด์ return ํด์ฃผ์ธ์.
- ๋ฐฐ์ด์ ๊ฐ ์์์ ์ ์ฅ๋ ๋ฌธ์์ด ๋ํ ์ํ๋ฒณ ์ค๋ฆ์ฐจ์์ผ๋ก ์ ๋ ฌ๋์ด์ผ ํฉ๋๋ค.
- ๋ง์ฝ ๊ฐ์ฅ ๋ง์ด ํจ๊ป ์ฃผ๋ฌธ๋ ๋ฉ๋ด ๊ตฌ์ฑ์ด ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด, ๋ชจ๋ ๋ฐฐ์ด์ ๋ด์ return ํ๋ฉด ๋ฉ๋๋ค.
- orders์ course ๋งค๊ฐ๋ณ์๋ return ํ๋ ๋ฐฐ์ด์ ๊ธธ์ด๊ฐ 1 ์ด์์ด ๋๋๋ก ์ฃผ์ด์ง๋๋ค.
[์ ์ถ๋ ฅ ์]
["ABCFG", "AC", "CDE", "ACDE", "BCFG", "ACDEH"] | [2,3,4] | ["AC", "ACDE", "BCFG", "CDE"] |
["ABCDE", "AB", "CD", "ADE", "XYZ", "XYZ", "ACD"] | [2,3,5] | ["ACD", "AD", "ADE", "CD", "XYZ"] |
["XYZ", "XWY", "WXA"] | [2,3,4] | ["WX", "XY"] |
์
์ถ๋ ฅ ์ #1
๋ฌธ์ ์ ์์์ ๊ฐ์ต๋๋ค.
์
์ถ๋ ฅ ์ #2
AD๊ฐ ์ธ ๋ฒ, CD๊ฐ ์ธ ๋ฒ, ACD๊ฐ ๋ ๋ฒ, ADE๊ฐ ๋ ๋ฒ, XYZ ๊ฐ ๋ ๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค.
์๋ฆฌ 5๊ฐ๋ฅผ ์ฃผ๋ฌธํ ์๋์ด 1๋ช
์์ง๋ง, ์ต์ 2๋ช
์ด์์ ์๋์๊ฒ์ ์ฃผ๋ฌธ๋ ๊ตฌ์ฑ๋ง ์ฝ์ค์๋ฆฌ ํ๋ณด์ ๋ค์ด๊ฐ๋ฏ๋ก, ์๋ฆฌ 5๊ฐ๋ก ๊ตฌ์ฑ๋ ์ฝ์ค์๋ฆฌ๋ ์๋ก ์ถ๊ฐํ์ง ์์ต๋๋ค.
์
์ถ๋ ฅ ์ #3
WX๊ฐ ๋ ๋ฒ, XY๊ฐ ๋ ๋ฒ ์ฃผ๋ฌธ๋์ต๋๋ค.
3๋ช
์ ์๋ ๋ชจ๋ ๋จํ๋ฉ๋ด๋ฅผ 3๊ฐ์ฉ ์ฃผ๋ฌธํ์ง๋ง, ์ต์ 2๋ช
์ด์์ ์๋์๊ฒ์ ์ฃผ๋ฌธ๋ ๊ตฌ์ฑ๋ง ์ฝ์ค์๋ฆฌ ํ๋ณด์ ๋ค์ด๊ฐ๋ฏ๋ก, ์๋ฆฌ 3๊ฐ๋ก ๊ตฌ์ฑ๋ ์ฝ์ค์๋ฆฌ๋ ์๋ก ์ถ๊ฐํ์ง ์์ต๋๋ค.
๋, ๋จํ๋ฉ๋ด๋ฅผ 4๊ฐ ์ด์ ์ฃผ๋ฌธํ ์๋์ ์์ผ๋ฏ๋ก, ์๋ฆฌ 4๊ฐ๋ก ๊ตฌ์ฑ๋ ์ฝ์ค์๋ฆฌ ๋ํ ์๋ก ์ถ๊ฐํ์ง ์์ต๋๋ค.
๐ ํ์ด ์ฝ๋
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
counter = Counter()
for o in orders:
max_len = len(o)
for i in range(2, max_len+1):
for c in combinations(o, i):
key = ''.join(sorted(c))
counter[key] += 1
tuples = counter.most_common()
for c in course:
a = [t for t in tuples if len(t[0]) == c]
if a:
max_count = a[0][1]
if max_count > 1:
for b in a:
if b[1] == max_count:
answer.append(b[0])
return sorted(answer)
combinations ํด์ ์ฌ์ฉํด์ ๊ตฌํํ๋ค.
๊ฐ ์ฃผ๋ฌธ์ ๋ํด์ 2๊ฐ๋ถํฐ ์ฃผ๋ฌธ ์ ์ฒด ๊ธธ์ด๊น์ง ๋์ฌ ์ ์๋ ๋ชจ๋ ์กฐํฉ์ ์ฐพ๋๋ค.
ํด๋น ์กฐํฉ์ ์ ๋ ฌ์ํจ ํ, counter์ ์ ์ฅํ๋ค.
counter์ most_common ๋ฉ์๋๋ฅผ ํ์ฉํด ๊ฐ์ฅ ๋ง์ด ๋์จ ์กฐํฉ์ ๊ฒฐ๊ณผ๋ฅผ ์ป์ด์จ๋ค.
most_common์ ์ธ์๋ก ์ซ์๋ฅผ ๋ฃ์ผ๋ฉด n๊ฐ๊ฐ ๋ฆฌํด๋์ง๋ง, ์ธ์๋ฅผ ๋ฃ์ง ์์ผ๋ฉด ๊ฐ์ฅ ๋ง์ด ๋์จ ์กฐํฉ ์์ผ๋ก ์ ๋ ฌ๋ ๊ฒฐ๊ณผ๊ฐ ๋ฆฌํด๋๋ค.
๊ทธ ์ค ์ฝ์ค์๋ฆฌ์ ๋ฉ๋ด ๊ฐฏ์์ ๊ธธ์ด๋ฅผ ๊ฐ์ง ์กฐํฉ ์ค์์ ์ต๋ ๊ฐฏ์๋ฅผ ๊ฐ์ง ์กฐํฉ์ ๋ชจ๋ ๊ฒฐ๊ณผ ๋ฆฌ์คํธ์ ๋ฃ๋๋ค.
์ต์ข ์ ์ผ๋ก ์ฌ์ ์์ผ๋ก ์ ๋ ฌํ๋ฉด ๋๋ค.
'๐ ์ฝ๋ฉํ ์คํธ ๋๋น : PS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค] ํ๋ ฌ ํ ๋๋ฆฌ ํ์ (level2, python) (0) | 2022.10.13 |
---|---|
[ํ๋ก๊ทธ๋๋จธ์ค] ๊ดํธ ๋ณํ (level2, python) (0) | 2022.10.11 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ณด์ ์ผํ (level3, python) (0) | 2022.10.10 |
[ํ๋ก๊ทธ๋๋จธ์ค] ๋ถ๋ ์ฌ์ฉ์ (level3, python) (0) | 2022.09.27 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์ผ๊ฐ ๋ฌํฝ์ด (level2, python) (0) | 2022.09.26 |