ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค [lv2] ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ ํŒŒ์ด์ฌ

2021. 8. 29. 21:25ใ†๐Ÿ”ฑ Algorithm

 

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์—ฐ์Šต - ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ

๋ ˆ์Šคํ† ๋ž‘์„ ์šด์˜ํ•˜๋˜ ์Šค์นดํ”ผ๋Š” ์ฝ”๋กœ๋‚˜19๋กœ ์ธํ•œ ๋ถˆ๊ฒฝ๊ธฐ๋ฅผ ๊ทน๋ณตํ•˜๊ณ ์ž ๋ฉ”๋‰ด๋ฅผ ์ƒˆ๋กœ ๊ตฌ์„ฑํ•˜๋ ค๊ณ  ๊ณ ๋ฏผํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ธฐ์กด์—๋Š” ๋‹จํ’ˆ์œผ๋กœ๋งŒ ์ œ๊ณตํ•˜๋˜ ๋ฉ”๋‰ด๋ฅผ ์กฐํ•ฉํ•ด์„œ ์ฝ”์Šค์š”๋ฆฌ ํ˜•ํƒœ๋กœ ์žฌ๊ตฌ์„ฑํ•ด์„œ

programmers.co.kr

 

 

 

๐Ÿ’ป  ์ฝ”๋“œ 

from itertools import combinations
from collections import Counter


def solution(orders, course):
    answer = []
    for n in course:  # ์–˜๊ฐ€ ๋จผ์ € ๋‚˜์™€์•ผ ํ•˜๋Š” ์ด์œ ๋Š”, ๊ฐฏ์ˆ˜๋ณ„ ์ตœ๊ฐ•์ž๋ฅผ ๋จผ์ € ๊ณจ๋ผ๋‚ด์•ผํ•˜๊ธฐ ๋•Œ๋ฌธ
        temp = []
        for order in orders:
            for combination in combinations(order, n):
                temp.append(''.join(sorted(combination)))

        menu = Counter(temp)
        try:
            maximum = max(Counter(temp).values())
        except ValueError:
            pass

        for key, value in menu.items():
            if value == maximum and maximum > 1:
                answer.append(key)
    answer.sort()
    return answer

 

โœ…  ํ‚ค ํฌ์ธํŠธ

1. combinations() ์™€ Counter() ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค. (๋ฌผ๋ก  ๋‹ค๋ฅธ ํ’€์ด๋„ ์กด์žฌํ•˜๋ฏ€๋กœ ํ•„์ˆ˜๋Š” ์•„๋‹ˆ๋‹ค)

2. course ๋‚ด๋ถ€ ์›์†Œ๋“ค์„ ๊ธฐ์ค€์œผ๋กœ orders ๋ฅผ ์„ ๋ณ„ํ•ด์•ผํ•œ๋‹ค. ์ฆ‰ ๋ชจ๋“  ๊ฐฏ์ˆ˜๋งˆ๋‹ค ๋ถ„๋ฅ˜ํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , course ๋‚ด๋ถ€ ์›์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ์ ‘๊ทผํ•œ๋‹ค.

3. ๊ฐ ์กฐํ•ฉ๋งˆ๋‹ค ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ์„ ํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ๊ฐœ๋ณ„ ์ผ€์ด์Šค๊ฐ€ ์ƒ๊ฒจ๋ฒ„๋ ค ์ œ๋Œ€๋กœ ์นด์šดํŒ…์„ ํ•  ์ˆ˜ ์—†๋‹ค.

4. ๋‘๋ฒˆ ์ด์ƒ ์„ ํƒ๋œ ๋ฉ”๋‰ด๋งŒ ๊ฒฐ๊ณผ๊ฐ’์— ๋“ค์–ด๊ฐ€๋Š” ์กฐ๊ฑด์„ ์žŠ์ง€๋ง์ž.