์ถ์ฒ | 2021 KAKAO BLINE RECRUITMENT
programmers.co.kr/learn/courses/30/lessons/72411
์ฝ๋ฉํ ์คํธ ์ฐ์ต - ๋ฉ๋ด ๋ฆฌ๋ด์ผ
๋ ์คํ ๋์ ์ด์ํ๋ ์ค์นดํผ๋ ์ฝ๋ก๋19๋ก ์ธํ ๋ถ๊ฒฝ๊ธฐ๋ฅผ ๊ทน๋ณตํ๊ณ ์ ๋ฉ๋ด๋ฅผ ์๋ก ๊ตฌ์ฑํ๋ ค๊ณ ๊ณ ๋ฏผํ๊ณ ์์ต๋๋ค. ๊ธฐ์กด์๋ ๋จํ์ผ๋ก๋ง ์ ๊ณตํ๋ ๋ฉ๋ด๋ฅผ ์กฐํฉํด์ ์ฝ์ค์๋ฆฌ ํํ๋ก ์ฌ๊ตฌ์ฑํด์
programmers.co.kr
๋ฌธ์ ์ค๋ช
๋ ์คํ ๋์ ์ด์ํ๋ ์ค์นดํผ๋ ์ฝ๋ก๋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 ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
(์ดํ ์๋ต)
๋ฌธ์ ํ์ด
โถ combination(์กฐํฉ)๊ณผ counter๋ฅผ ํ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํ์๋ค.
โถ ๋จผ์ ๊ณ ๊ฐ์ด ์ฃผ๋ฌธํ ๋จํ๋ฉ๋ด๋ค์ ์ด์ฉํด ์ฝ์ค์๋ฆฌ๋ฅผ ๊ตฌ์ฑํ๋ ๋จํ๋ฉ๋ด์ ๊ฐฏ์๋งํผ ๋ชจ๋ ์กฐํฉ์ ์์ฑํ๋ค.
โถ ์ฃผ๋ฌธํ ์ฌ๋์ด 2๋ช ์ด์/๊ฐ์ฅ ๋ง์ด ์ฃผ๋ฌธํ ๋ฉ๋ด ์กฐํฉ์ด๋ผ๋ฉด ์๋ก์ด ๋งค๋ด๊ตฌ์ฑ์ผ๋ก ์ถ๊ฐํ๋ค.
โถ combinations์ ์ฒ์ ์์์๋ ์ด๊ฑธ ์ฝํ ์์ ์ธ์ผ์ด ์์๊น ์๊ฐํ๊ธฐ๋ ํ๋ค. ์ด๋ ๊ฒ ๋ฌธ์ ๋ก ๋ง๋๋๊น ํ์์ฑ์ ๊นจ๋ซ๊ฒ ๋๋๊ฑฐ ๊ฐ๋ค. ์์ผ๋ก๋ ์์ฃผ ์จ๋ฒ๋ฆํด์ผ๊ฒ ๋ค.
from itertools import combinations
from collections import Counter
def solution(orders, course):
answer = []
for c in course:
_course=[]
for order in orders:
combination=combinations(sorted(order),c) # ๋จํ๋ฉ๋ด๋ค์ ๊ฐฏ์ ๋งํผ ์กฐํฉ๋ง๋ค๊ธฐ
_course+=combination
# ์ค๋ณต๋๋ ์กฐํฉ ์นด์ดํธ
counter=Counter(_course)
if len(counter) !=0 and max(counter.values()) > 1: # 2๋ฒ ์ด์ ์ฃผ๋ฌธ๋๋ค๋ฉด
for c in counter:
if counter[c] == max(counter.values()):
answer.append(''.join(c))
# ์ ๋ ฌ ํ ๋ฆฌํด
return sorted(answer)
'์ฝ๋ฉํ ์คํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Myslq/Oracle] SQL ์ฐ์ตํ ์ ์๋ ์ฌ์ดํธ ์ถ์ฒ (0) | 2021.11.16 |
---|---|
[KAKAO|์นด์นด์ค ๊ธฐ์ถ๋ฌธ์ ] ์ ๊ท ์์ด๋ ์ถ์ฒ (0) | 2021.04.21 |
์ฝ๋ฉํ ์คํธ ๊ด๋ จ ๋ด์ฉ์ ๋ฆฌ (4) (0) | 2021.03.15 |
์ฝ๋ฉํ ์คํธ ๊ด๋ จ ๋ด์ฉ์ ๋ฆฌ (3) (0) | 2021.03.11 |
์ฝ๋ฉํ ์คํธ ๊ด๋ จ ๋ด์ฉ์ ๋ฆฌ (2) (0) | 2021.02.20 |