2022 KAKAO BLIND RECRUITMENT - Lv2.
๐ต ๋ฌธ์
https://school.programmers.co.kr/learn/courses/30/lessons/92342
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๐ ํ์ด
input์ผ๋ก ๋ค์ด์ค๋ ์น๊ตฌ๋ค์ ํฌ๊ธฐ๋ฅผ ๋ณด๊ณ ๋ธ๋ฃจํธ ํฌ์ค๋ก ํ์ํ์ต๋๋ค.
๋ผ์ด์ธ์ด ์ ์ ์๋ ํ์ด์ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ด์ ์ค๋ณต์กฐํฉ์ ๋ชจ๋ ๊ตฌํ๊ณ , ์ด๋ฅผ ํ ๋๋ก ์ดํผ์น์ ํ์ด ๊ฒฝ์ฐ์ ์์ ๋์กฐํด ๊ฐ๊ฐ์ ์ ์๋ฅผ ๊ตฌํฉ๋๋ค.
๊ฐ๊ฐ ์ ์๋ฅผ ๊ตฌํ๊ณ ์ด์นํผ์ ๋ผ์ด์ธ์ ์ ์๋ฅผ ๋น๊ต, ๋ ํฐ ์ ์ ์ฐจ๊ฐ ๋ ๋๋ง๋ค ์ ์ญ๋ณ์ score_diff๋ฅผ ๊ฐฑ์ ํด์ค๋๋ค.
์ด ๋,
๋ผ์ด์ธ์ด ๊ฐ์ฅ ํฐ ์ ์ ์ฐจ์ด๋ก ์ฐ์นํ ์ ์๋ ๋ฐฉ๋ฒ์ด ์ฌ๋ฌ ๊ฐ์ง ์ผ ๊ฒฝ์ฐ, ๊ฐ์ฅ ๋ฎ์ ์ ์๋ฅผ ๋ ๋ง์ด ๋งํ ๊ฒฝ์ฐ๋ฅผ return ํด์ฃผ์ธ์.
๋ผ๋ ์กฐ๊ฑด์ด ์์ผ๋ฏ๋ก, ์ฐจ์ด๊ฐ ๊ฐ์ ๊ฒฝ์ฐ์๋ ๋ฎ์ ์ ์๋ฅผ ๋ง์ด ๋งํ ๊ฒฝ์ฐ ๊ฐฑ์ ํด์ค๋๋ค.
result = max(result[::-1], lion_info[::-1])[::-1] # ๋ ๋ฒ์งธ ์ฐ์ ์์ ๊ณ ๋ คํด ๊ฐฑ์
๐ก ํ์ด ์ฝ๋๋ ์๋์ ๊ฐ์ต๋๋ค.
from itertools import combinations_with_replacement
def get_score(l_list, a_list): # ๋ info ๋ฐฐ์ด์ ๋ณด๊ณ ํ๋ ์ด์ด ๋ ๋ช
์ ์ ์๋ฅผ ๊ฐ๊ฐ ๊ตฌํ๋ ๊ณผ์
l_result, a_result = 0, 0
for i in range(len(l_list)):
if l_list[i] == 0 and a_list[i] == 0:
continue
if l_list[i] > a_list[i]:
l_result += 10 - i
elif a_list[i] >= l_list[i]:
a_result += 10 - i
return [l_result, a_result]
def get_info(cwr, length): # ํ์ด ๊ฒฝ์ฐ์ ์๋ฅผ input ์ผ๋ก ์ฃผ์ด์ง 'info' ์ ๊ฐ์ ํ์์ผ๋ก ํํ
result = [0 for _ in range(length)]
for i in cwr:
result[i] += 1
return result
def solution(n, info):
result = [-1]
score_diff = 0
for cwr in combinations_with_replacement(range(11), n):
lion_info = get_info(cwr, len(info))
lion_score, apeach_score = get_score(lion_info, info)
if lion_score <= apeach_score: # ๋ผ์ด์ธ (ํจ)์ธ ๊ฒฝ์ฐ
continue
curr_diff = lion_score - apeach_score # ๋ผ์ด์ธ (์น)์ธ ๊ฒฝ์ฐ ์งํํ ๋ก์ง โฌ๏ธ
if curr_diff > score_diff:
result = lion_info
score_diff = curr_diff
elif curr_diff == score_diff:
result = max(result[::-1], lion_info[::-1])[::-1] # ๋ ๋ฒ์งธ ์ฐ์ ์์
return result
ํ์ ์ค๋ณต์กฐํฉ ๋ถ๋ถ์ ์ฐ์ต ์ฐจ ์ค์ ๋ก๋ ๊ตฌํ ํด๋ณด๋ฉด ์ข์ ๊ฒ ๊ฐ์ต๋๋ค.