๐Ÿถ Programming/์•Œ๊ณ ๋ฆฌ์ฆ˜ ๋ฌธ์ œ ํ’€๊ธฐ

2022 KAKAO BLIND RECRUITEMENT Lv2. ์–‘๊ถ๋Œ€ํšŒ

์ง€ ์› 2022. 7. 17. 23:41

2022  KAKAO BLIND RECRUITEMENT 

Lv2. ์–‘๊ถ๋Œ€ํšŒ

https://programmers.co.kr/learn/courses/30/lessons/92342

 

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

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

programmers.co.kr

๐Ÿ”ธ ๋‚ด๊ฐ€ ์ƒ๊ฐํ•œ ์ ‘๊ทผ ๋ฐฉ๋ฒ•

๊ฐ€๋Šฅํ•œ ์ ์ˆ˜์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 11๊ฐ€์ง€(0~10์ )

ํ™”์‚ด์„ ์˜๋Š” ๊ฒฝ์šฐ → n๊ฐœ (1≤n≤10)

11๊ฐœ์ค‘์— n๊ฐœ๋ฅผ ์ค‘๋ณตํ•ด์„œ ๊ณ ๋ฅด๋ฉด ๋จ → ์™„์ „ํƒ์ƒ‰ ๋ฌธ์ œ

์™„์ „ํƒ์ƒ‰ ์ค‘์— n์˜ ๊ฐ€์ง“์ˆ˜๊ฐ€ ์ ์œผ๋ฏ€๋กœ ์ˆœ์—ด/์กฐํ•ฉ ์‚ฌ์šฉ.

(๊ฐ€์ง“์ˆ˜๊ฐ€ ๋งŽ์œผ๋ฉด ๊ทธ๋ฆฌ๋””/๋ฐฑํŠธ๋ž˜ํ‚น/bfs ์‚ฌ์šฉ)

 

from itertools import *

# a๊ฐ€ b๋ณด๋‹ค ๋” ์ข‹์€ ๋ฐฐ์น˜์ผ ๊ฒฝ์šฐ true
def cmp(a, b):
    return a[::-1] > b[::-1]

def solution(n, info):
    # ๋ผ์ด์–ธ์ด ๊ฐ€์žฅ ํฐ ์ ์ˆ˜ ์ฐจ์ด๋กœ ์šฐ์Šนํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒฐ๊ณผ๋ฅผ ์ €์žฅ
    # ret[0..10] : 10-i์ ์—์„œ ๋ผ์ด์–ธ์ด ๋งžํžŒ ํ™”์‚ด์˜ ์ˆ˜, ret[11] : ์ ์ˆ˜ ์ฐจ์ด
    ret = [-1] * 12 
    for comb in combinations_with_replacement(range(11), n):
        arrow = [0] * 12
        score = 0
        for x in comb: arrow[x] += 1
        for i in range(11):
            if arrow[i] > info[i]:
                score += (10 - i)
            elif info[i] != 0:
                score -= (10 - i)
        if score <= 0: continue
        arrow[11] = score
        if cmp(arrow, ret):
            ret = arrow[:] # deepcopy๋ฅผ ํ•ด์•ผ ํ•จ์— ์ฃผ์˜
    if ret[0] == -1: return [-1]
    return ret[:-1]

๐Ÿ”‘ Key Point

๐Ÿ”ธ deepcopy๋ฅผ ์ƒํ™œํ™” ํ•˜์ž! ⇒ ๋ฆฌ์ŠคํŠธ ๋Œ€์ž…ํ• ๋•Œ a[:] ์ด๋ ‡๊ฒŒ ์จ์ค˜์•ผ ๋‚˜์ค‘์— a๊ฐ’์„ ๋ฐ”๊ฟ”๋„ ๋Œ€์ž…ํ•œ ๋ฆฌ์ŠคํŠธ๋Š” ์•ˆ๋ฐ”๋€œ! a์˜ ๊ฐ’๋งŒ ๊ฐ€์ ธ์˜ค๋Š” ๊ฒƒ. ๋ญ”๊ฐ€ ๋น„๊ต๋Œ€์ƒ ๊ฐ™์€ ๊ฑฐ ๊ณ ์ • ์‹œ์ผœ๋‘ฌ์•ผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ๊ฑฐ ์žŠ์ง€ ์•Š๊ธฐ!

๐Ÿ”ธ continue๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๊ทธ ๋’ค์˜ ๊ณผ์ •์„ ์ƒ๋žตํ•˜๊ณ  ๋ฐ”๋กœ ๋Œ๊ณ  ์žˆ๋Š” ๋ฐ˜๋ณต๋ฌธ์˜ ๋‹ค์Œ ์ฐจ๋ก€ ๋ฐ˜๋ณต์œผ๋กœ ๋„˜์–ด๊ฐ.

๐Ÿ”ธ a[::-1] ⇒ ์—ญ์ˆœ ๋น„๊ต

๐Ÿ”ธ from itertools import * ⇒ ์ˆœ์—ด ์กฐํ•ฉ ์“ธ ์ˆ˜ ์žˆ์Œ