๐น ์ด๋ชจํฐ์ฝ ํ ์ธ ํ์ฌ
1. ๋ฌธ์ ๋งํฌ
2023 KAKAO BLIND RECRUITMENT: ์ด๋ชจํฐ์ฝ ํ ์ธ ํ์ฌ
2. ์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
from itertools import product
def solution(users, emoticons):
answer = [0, 0]
u_num = len(users)
e_num = len(emoticons)
discount_rate = [40, 30, 20, 10]
# ์ด๋ชจํฐ์ฝ ๊ฐ์๋งํผ ๋ฝ๋ ๋ชจ๋ ์ค๋ณต ์์ด ๊ตฌํ๊ธฐ(์ด๋ชจํฐ์ฝ ํ ์ธ์จ ๋ชจ๋ ๊ฒฝ์ฐ ๊ตฌํ๊ธฐ)
for d_list in product(discount_rate, repeat=e_num):
purchase_history = [0] * u_num
now = [0, 0] # ํ๋ฌ์ค ๊ฐ์
์, ํ๋งค์ก
for i, d in enumerate(d_list):
for j in range(u_num):
# ์ ์ ๊ฐ ์ํ ํ ์ธ์จ๋ณด๋ค ๋์ผ๋ฉด(๊ตฌ๋งค ์กฐ๊ฑด ์ถฉ์กฑ)
if users[j][0] <= d:
purchase_history[j] += emoticons[i] * (100 - d) // 100
# ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
์ ํ์ธ
for i in range(u_num):
# ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค ๋น์ฉ์ด ๋ณธ์ธ ์ผ์ ๊ฐ๊ฒฉ ์ด์ -> ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
if users[i][1] <= purchase_history[i]:
now[0] += 1
# ํ๋ฌ์ค ๊ฐ์
์ ์๋๋ -> ํ๋งค์ก ์ฐ์
else:
now[1] += purchase_history[i]
# 1์์: ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ๊ฐ์
์
if answer[0] < now[0]:
answer = now
# 2์์: ํ๋งค์ก
elif answer[0] == now[0] and answer[1] < now[1]:
answer = now
return answer
์ ํ์ฑ
ํ ์คํธ 1 ใ ํต๊ณผ (0.05ms, 10.2MB) ํ ์คํธ 2 ใ ํต๊ณผ (0.10ms, 10.2MB) ํ ์คํธ 3 ใ ํต๊ณผ (0.45ms, 10.3MB) ํ ์คํธ 4 ใ ํต๊ณผ (2.02ms, 10.3MB) ํ ์คํธ 5 ใ ํต๊ณผ (3.68ms, 10.2MB) ํ ์คํธ 6 ใ ํต๊ณผ (2.38ms, 10.2MB) ํ ์คํธ 7 ใ ํต๊ณผ (20.09ms, 10.2MB) ํ ์คํธ 8 ใ ํต๊ณผ (10.82ms, 10.2MB) ํ ์คํธ 9 ใ ํต๊ณผ (91.58ms, 10.2MB) ํ ์คํธ 10 ใ ํต๊ณผ (50.08ms, 10.3MB) ํ ์คํธ 11 ใ ํต๊ณผ (451.38ms, 10.3MB) ํ ์คํธ 12 ใ ํต๊ณผ (251.42ms, 10.4MB) ํ ์คํธ 13 ใ ํต๊ณผ (1973.12ms, 10.4MB) ํ ์คํธ 14 ใ ํต๊ณผ (1805.55ms, 10.2MB) ํ ์คํธ 15 ใ ํต๊ณผ (87.65ms, 10.2MB) ํ ์คํธ 16 ใ ํต๊ณผ (85.70ms, 10.2MB) ํ ์คํธ 17 ใ ํต๊ณผ (0.44ms, 10.3MB) ํ ์คํธ 18 ใ ํต๊ณผ (29.05ms, 10.2MB) ํ ์คํธ 19 ใ ํต๊ณผ (0.09ms, 10.2MB) ํ ์คํธ 20 ใ ํต๊ณผ (0.06ms, 10.2MB)
3. ํด์ค
์ด๋ชจํฐ์ฝ์ ๋ชจ๋ ํ ์ธ์จ์ ๋ถ์ฌํ์ฌ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ฐ์ ธ ๊ฐ์ฅ ์ต์ ์ ์ ํ์ ๋ฝ๋๋ค.
์ค๋ณต์์ด์ ํตํด ๊ฐ๋ฅํ ๋ชจ๋ ํ ์ธ์ ๊ฒฝ์ฐ๋ฅผ ๊ณ์ฐํ๊ณ ๊ทธ๋์ ๋ชจ๋ ๊ฒฐ๊ณผ(ํ๋ฌ์ค ๊ฐ์ ์, ํ๋งค์ก)์ ๋น๊ตํด์ค๋ค.
์ด๋ ์๊ฐ๋ณต์ก๋๋ฅผ ๋๋ต ๊ณ์ฐํด๋ดค์ ๋ ์ต์
์ ๊ฒฝ์ฐ ์ด๋ชจํฐ์ฝ ๊ฐ์ = 7
, ์ ์ ์ = 100
์ด๊ณ , ์ด๋ชจํฐ์ฝ ํ ์ธ์จ 4๊ฐ
๋ก ๊ณ์ฐ์ ํ์ ๋ ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๊ตฌํ๋ ์๊ฐ์ ์๋์ ๊ฐ๊ณ , ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ๋ค ๊ตฌํด๋ 1์ด์ 1์ต๋ฒ ๊ณ์ฐ์ด ๊ฐ๋ฅํ๋ค๊ณ ํ๋ค๋ฉด ์ด 1์ต๋ฒ ์ดํ์ด๋ฏ๋ก ๋ชจ๋ ๊ฒฝ์ฐ๋ฅผ ํ์ํด๋ ๋๋ค.
์ ์ ๋ณ ์ต์ข ๊ตฌ๋งค๋ด์ญ์ ๊ตฌํ ํ ์ผ์ ๊ฐ๊ฒฉ ์ด์์ ํ๋ฌ์ค ๊ฐ์ ์์ ๋ํด์ฃผ๊ณ , ์๋ ๊ฒฝ์ฐ ํ๋งค์ก์ ๋ํ ํ ์ต์ข ๊ฐ์ max๊ฐ๊ณผ ๋น๊ตํ์ฌ ๋ณ๊ฒฝํด์ค๋ค.