๐Ÿค–/ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค | Lv2] ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ (Python) - 2021 KAKAO BLIND RECRUITMENT

sssbin 2023. 3. 3. 19:24

 

https://school.programmers.co.kr/learn/courses/30/lessons/72411

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

orders์—์„œ ์ค‘๋ณต์„ ํฌํ•จํ•˜์ง€ ์•Š๋Š” ์กฐํ•ฉ์œผ๋กœ course์— ํ•ด๋‹นํ•˜๋Š” ์ˆ˜๋งŒํผ์˜ ๋ฌธ์ž์—ด์„ ๋ฝ‘์•„๋‚ธ๋‹ค.

ํŒŒ์ด์ฌ์—์„œ ์กฐํ•ฉ์„ ์ด์šฉํ•˜๋ฉด ์›์†Œ๋ฅผ ํŠœํ”Œ๋กœ ๋ฐ˜ํ™˜ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ์ด๋ฅผ ๋ฆฌ์ŠคํŠธ๋กœ ๋ณ€ํ™˜ ํ›„ ์ •๋ ฌํ•ด์ฃผ๊ณ  ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜ํ•œ๋‹ค.

๊ทธ๋ฆฌ๊ณ  result ๋”•์…”๋„ˆ๋ฆฌ์— {"๋ฌธ์ž์—ด" : ํ•ด๋‹น ๋ฌธ์ž์—ด์ด ๋‚˜์˜จ ๊ฐœ์ˆ˜}๋กœ ์ €์žฅํ•ด์คฌ๋‹ค.

 

result๋ฅผ ๋Œ๋ฉด์„œ ์ตœ๋Œ“๊ฐ’์„ ๋ฝ‘์•„๋‚ธ๋‹ค.

๋จผ์ € 2๋ช… ์ด์ƒ์˜ ์†๋‹˜์—๊ฒŒ์„œ ์ฃผ๋ฌธ์ด ๋“ค์–ด์˜จ ๊ฑด๋งŒ ํฌํ•จํ•ด์•ผ ํ•˜๋ฉฐ,

ํ•ด๋‹น ๊ฐ’์ด ์ตœ๋Œ“๊ฐ’์ผ ๋•Œ๋Š” tmp ๋ฆฌ์ŠคํŠธ๋ฅผ ๊ฐฑ์‹ ํ•ด์ฃผ๊ณ ,

ํ•ด๋‹น ๊ฐ’์ด ์•ž์„œ ๋‚˜์˜จ ์ตœ๋Œ“๊ฐ’๊ณผ ๋™์ผํ•œ ๊ฐ’์ผ ๋•Œ๋Š” tmp ๋ฆฌ์ŠคํŠธ์— ์ถ”๊ฐ€ํ•ด์คฌ๋‹ค.

 

answer ๋ฆฌ์ŠคํŠธ์— tmp์˜ ์›์†Œ๋“ค์„ ํ•˜๋‚˜์”ฉ ์ถ”๊ฐ€ํ•ด์ฃผ๊ณ ,

๋ชจ๋“  ์ถ”๊ฐ€๊ฐ€ ๋๋‚˜๋ฉด ๋ฆฌ์ŠคํŠธ๋ฅผ ์ •๋ ฌํ•œ ํ›„ ๋ฆฌํ„ดํ•ด์ค€๋‹ค.

 

# ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค 72411: ๋ฉ”๋‰ด ๋ฆฌ๋‰ด์–ผ (2021 KAKAO BLIND RECRUITMENT)

from itertools import combinations

def solution(orders, course):
    answer = []
    for i in course:
        result = {}
        for j in orders:
            # orders์—์„œ course๋ณ„๋กœ ํ•ด๋‹น ์ˆ˜ ๋ฝ‘์•„๋ƒ„
            c = list(combinations(j, i))
            for k in c:
                # ์•ŒํŒŒ๋ฒณ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ ํ›„ ๋ฌธ์ž์—ด๋กœ ๋ณ€ํ™˜
                k = sorted(list(k))
                s = ''.join(k)
                # ๋”•์…”๋„ˆ๋ฆฌ์— ์ถ”๊ฐ€ {๋ฌธ์ž์—ด: ์นด์šดํŠธ}
                if s in result:
                    result[s] += 1
                else:
                    result[s] = 1
                    
        max_cnt = 0
        tmp = []
        for key in result:
            if result[key] < 2: # 2๋ช… ์ดํ•˜์˜ ์†๋‹˜์—๊ฒŒ์„œ ์ฃผ๋ฌธ๋œ ๊ตฌ์„ฑ์€ ํ›„๋ณด์— ๋“ค์–ด๊ฐ€์ง€ ์•Š์Œ
                continue

            if result[key] > max_cnt: # ์ตœ๋Œ“๊ฐ’ ๊ฐฑ์‹ 
                max_cnt = result[key]
                tmp = [key]
            elif result[key] == max_cnt: # ๋™์ผํ•œ ์ตœ๋Œ“๊ฐ’ ์ถ”๊ฐ€
                tmp.append(key)

        for i in tmp: # ์ •๋‹ต ๋ฐฐ์—ด์— ์ถ”๊ฐ€
            answer.append(i)

    answer.sort() # ์•ŒํŒŒ๋ฒณ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
    return answer