|
| 1 | +''' |
| 2 | +์๊ตฌ์ฌํญ |
| 3 | +- k (1~10)์ ์ ์ดํผ์น๊ฐ a๋ฐ์ ๋ง์ท๊ณ , ๋ผ์ด์ธ์ด b๋ฐ์ ๋งํ์ ๋, b> a์ด๋ฉด k์ ์ ๋ผ์ด์ธ์ด ๊ฐ์ ธ๊ฐ๊ณ , ์๋๋ฉด ์ดํผ์น๊ฐ k์ ์ ๊ฐ์ ธ๊ฐ๋ค. ๋จ a = b = 0์ผ ๊ฒฝ์ฐ ๋๊ตฌ๋ k์ ์ ๊ฐ์ ธ๊ฐ์ง ๋ชปํ๋ค. |
| 4 | +- ๋ชจ๋ ๊ณผ๋
์ ๋ํ์ฌ ๋ ์ ์์ ์ด์ ๊ณ์ฐ, ๋จ ์ต์ข
์ ์๊ฐ ๊ฐ์ผ๋ฉด ์ดํผ์น๋ฅผ ์ฐ์น์๋ก |
| 5 | +- ์ดํผ์น๊ฐ n๋ฐ์ ์ ํ ๊ทธ ์ ๋ณด๋ฅผ ๊ฐ์ง๊ณ ๋ผ์ด์ธ์ด ์ดํผ์น๋ฅผ ๊ฐ์ฅ ํฐ ์ ์์ฐจ๋ก ์ด๊ธฐ๊ธฐ ์ํด n๋ฐ์ ์ด๋ป๊ฒ ๋ง์ถฐ์ผ ํ๋์ง ๊ตฌํด๋ผ. |
| 6 | +- ๋ผ์ด์ธ์ด ์ฐ์นํ ์ ์๋ ๊ฒฝ์ฐ -1์ ์ถ๋ ฅํ๊ณ , ๋ผ์ด์ธ์ด ๊ฐ์ฅ ํฐ ์ ์์ฐจ๋ก ์ด๊ธธ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ๊ฐ์ธ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋ฎ์ ์ ์๋ฅผ ๋ ๋ง์ด ๋งํ ๊ฒฝ์ฐ๋ฅผ ๋ฐํํด์ผ ํ๋ค. |
| 7 | +
|
| 8 | +
|
| 9 | +์์ด๋์ด |
| 10 | +- ์ด ๋ฌธ์ ๋ greedy๋ ์๋๊ฑฐ ๊ฐ๋ค. greedy๋ก ํ๋ ค๋ฉด ํฐ ์ ์๋ฅผ ๋ฌด์กฐ๊ฑด ๋จน๊ธฐ ์ํด ์ดํผ์น๊ฐ ์ ํ์ด + 1๋งํผ ํ ํ
๋ฐ ์
์ถ๋ ฅ ์ 1๋ฒ์ฒ๋ผ ๋ผ์ด์ธ์ด 10์ ์ ๋จน์ด๋ 9์ 8์ ์ ์ดํผ์น๊ฐ ๋จน์ผ๋ฉด ๋ผ์ด์ธ์ด ์ง๊ฒ ๋๋ค. |
| 11 | +- ๋ฐ๋ผ์ ์์ ํ์์ ์งํํด์ผ ํ๋ฉฐ, dfs์ backtracking์ ์ฌ์ฉํ์ฌ ๊น์ด ์ฐ์ ์ผ๋ก ๋ชจ๋ ๊ฒฝ์ฐ์ ์ ๊ณ์ฐ. |
| 12 | +- ์๊ถ๋ํ ์๋ฎฌ๋ ์ด์
์์ด๋์ด: info(์ดํผ์น์ ๊ฒฐ๊ณผ ๋ฐฐ์ด)๊ฐ 10์ ๋ถํฐ 0์ ๊น์ง์ ๋์ด์ด๋ฏ๋ก 10์ ๋ถํฐ 0์ ๊น์ง ๋ด๋ฆผ์ฐจ์์ผ๋ก ํ์ด์ ์๋ค. ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ ์ ์์ผ๋ฏ๋ก ํ์ฌ ์ ์์ ๋ํด ๋ผ์ด์ธ์ด 0๋ฐ ํน์ info[i] + 1๋ฐ์ ๋ง์ถ ๊ฒฝ์ฐ๋ง ๊ณ ๋ คํ๊ณ ๋๋จธ์ง ๊ฒฝ์ฐ๋ ์งํํ์ง ์๋๋ค. ์ฆ ์ดํผ์น๊ฐ 10์ ์ 2๋ฐ์ ๋ง์ท๋ค๋ฉด, ๋ผ์ด์ธ์ 0๋ฐ์ ๋ง์ถ๊ณ ํ์ด์ ์๊ปด ๋ค์ ์ ์๋ก ๊ฐ๋์ง, 2+1๋ฐ์ ๋ง์ถฐ ํ์ด์ ์ฐ๋๋ผ๋ ์ ์๋ฅผ ์ป๊ณ ๊ฐ๋์ง ๋๊ฐ์ง ๊ฒฝ์ฐ๋ง ํด์ผ ํ๋ค. |
| 13 | +
|
| 14 | +
|
| 15 | +๊ตฌํ |
| 16 | +1. dfs ์งํ |
| 17 | + - dfs ์ข
๋ฃ ์กฐ๊ฑด: ํ์ฌ ์ ์ํ์ด 0์ ์ด๊ฑฐ๋, ๋จ์ ํ์ด์ด ์์๋ |
| 18 | + - dfs ์งํ: (์ ์ ๊ทธ๋๋ก, ํ์ด๊ฐ์ ๊ทธ๋๋ก) ํน์ (ํ์ฌ ์ ์ ๋จน๊ธฐ, ํ์ด๊ฐ์ ์๋ชจํ๊ธฐ) ๋๊ฐ์ง ๋ฒ์ ์ผ๋ก ๋๋จ |
| 19 | +2. ๋ผ์ด์ธ๊ณผ ์ดํผ์น ์ค ๋๊ฐ ์ผ๋ง์ ์ฐจ์ด๋ก ์ด๊ฒผ๋์ง ํ์ธํ๋ ํจ์ |
| 20 | + - ์ฐจ์ด๊ฐ ๊ฐ๋ค๋ฉด ๊ฐ์ฅ ๋ฎ์ ์ ์๋ฅผ ๋ ๋ง์ด ๋ง์ถ ๋ฐฐ์ด ์ ํ |
| 21 | +
|
| 22 | +''' |
| 23 | + |
| 24 | +# ์ ์์ฐจ๊ฐ ๊ฐ์ ๊ฒฝ์ฐ ๊ฐ์ฅ ๋ฎ์ ์ ์๋ฅผ ๋ง์ด ์ ๊ฒ์ ์ ๋ต์ผ๋ก |
| 25 | +def choose_answer(arr1, arr2): |
| 26 | + length = len(arr1) |
| 27 | + |
| 28 | + # ๋ฎ์ ์ ์๋ถํฐ ์ฒดํฌํด์ผ ํ๋๊น ์ญ์์ผ๋ก |
| 29 | + for i in range(length-1, -1, -1): |
| 30 | + if arr1[i] > arr2[i]: |
| 31 | + return arr1 |
| 32 | + elif arr2[i] > arr1[i]: |
| 33 | + return arr2 |
| 34 | + |
| 35 | + # ๋ฐ๋ณต๋ฌธ์ด ๋๋ฌ๋๋ฐ ์ฌ๊ธฐ๊น์ง ์จ ๊ฒฝ์ฐ๋ ๋ ๋ฐฐ์ด์ด ๊ฐ๋ค๋ ๋ป์ด๋ฏ๋ก ์๋ฌด๊ฑฐ๋ ๋ฐํ |
| 36 | + return arr1 |
| 37 | + |
| 38 | + |
| 39 | + |
| 40 | +# ์น์์ ์ ์์ฐจ๋ฅผ ๋ฐํ. |
| 41 | +def get_winner(lion, appeach): |
| 42 | + lion_score = 0 |
| 43 | + appeach_score = 0 |
| 44 | + length = len(appeach) |
| 45 | + for i in range(length): |
| 46 | + if lion[i] > 0 or appeach[i] > 0: |
| 47 | + # ๋ผ์ด์ธ์ด ๋ง์ถ ํ์ด์ด ์ดํผ์น๋ณด๋ค ๋ง์ผ๋ฉด ๋ผ์ด์ธ์ด ์ ์๋ฅผ ๊ฐ์ ธ์ค๊ณ |
| 48 | + if lion[i] > appeach[i]: |
| 49 | + lion_score += (10 -i) |
| 50 | + # ๊ทธ๋ ์ง ์์ผ๋ฉด ์ดํผ์น๊ฐ ์ ์๋ฅผ ๊ฐ์ ธ์จ๋ค. |
| 51 | + else: |
| 52 | + appeach_score += (10 - i) |
| 53 | + |
| 54 | + # ๋ผ์ด์ธ ์น |
| 55 | + if lion_score > appeach_score: |
| 56 | + return 1, lion_score - appeach_score |
| 57 | + else: |
| 58 | + return -1, appeach_score - lion_score |
| 59 | + |
| 60 | +def dfs(n, idx, lion, appeach): |
| 61 | + global max_result, answer |
| 62 | + |
| 63 | + # dfs ์ข
๋ฃ ์กฐ๊ฑด. ํ์ฌ ์ ์ํ์ด 0์ ์ด๊ฑฐ๋, ๋จ์ ํ์ด์ด ์์ ๋ |
| 64 | + if n == 0 or idx == 10: |
| 65 | + # ์ ์ํ์ด 0์ ์ด๋ฉด ๋ผ์ด์ธ์ ๋จ์ ํ์ด ๋ชจ๋ 0์ ์ ๋ง์ถค |
| 66 | + if idx == 10: |
| 67 | + lion[idx] = n |
| 68 | + |
| 69 | + # ๋ ์ค ๋๊ฐ ์น์์ธ์ง ํ๋จํ๊ณ , ๋ผ์ด์ธ์ด ์น์๋ฉด ์ต๋์ ์์ธ์ง ํ์ธ |
| 70 | + winner, score_gap = get_winner(lion, appeach) |
| 71 | + |
| 72 | + # ๋ผ์ด์ธ์ด ์น์์ด๋ฉด |
| 73 | + if winner == 1: |
| 74 | + if max_result < score_gap: |
| 75 | + max_result = score_gap |
| 76 | + answer = lion |
| 77 | + elif max_result == score_gap: |
| 78 | + answer = choose_answer(answer, lion) |
| 79 | + return |
| 80 | + |
| 81 | + # ํ์ฌ ์ ์๋ฅผ ํฌ๊ธฐํ๊ณ ํ์ด์ ์๊ปด์ ๋ค์ dfs ์งํ |
| 82 | + dfs(n, idx+1, lion[:], appeach) |
| 83 | + |
| 84 | + # ์ดํผ์น๋ณด๋ค ํ ๋ฐ ๋ ์ด์ ํ์ฌ ์ ์๋ฅผ ๋จน๊ณ ๋ค์ dsf ์งํ |
| 85 | + if n >= appeach[idx] + 1: |
| 86 | + tmp = lion[:] |
| 87 | + tmp[idx] = appeach[idx] + 1 |
| 88 | + dfs(n - (appeach[idx] + 1), idx+1, tmp, appeach) |
| 89 | + |
| 90 | + |
| 91 | + |
| 92 | + |
| 93 | +def solution(n, info): |
| 94 | + global answer, max_result |
| 95 | + # ๋ผ์ด์ธ์ด ๋ง์ถ ์ ์ ์ด๊ธฐํ |
| 96 | + lion = [0] * 11 |
| 97 | + # ์ ๋ต์ด ๋ ๋ฐฐ์ด |
| 98 | + answer = [0] * 11 |
| 99 | + |
| 100 | + max_result = 0 |
| 101 | + |
| 102 | + # 10์ ๋ถํฐ 0์ ๊น์ง ์ ์ํ์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ํํ๋ฉฐ ๋ช ๋ฐ์ ๋ง์ท๋์ง ์๋ฎฌ๋ ์ด์
ํ๊ธฐ ์ํจ. |
| 103 | + # n์ ๋จ์ ํ์ด, idx๋ ํ์ฌ ์ ์ํ(0์ด๋ฉด 10์ , 10์ด๋ฉด 0์ ) |
| 104 | + dfs(n, 0, lion, info) |
| 105 | + |
| 106 | + if max_result == 0: |
| 107 | + print([-1]) |
| 108 | + else: |
| 109 | + print(answer) |
| 110 | + |
| 111 | + |
| 112 | +solution(10, [0,0,0,0,0,0,0,0,3,4,3]) |
0 commit comments