๐ข ์ด๋ชจํฐ์ฝ ํ ์ธ ํ์ฌ
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
"""
์ด๋ชจํฐ์ฝ ํ ์ธํ์ฌ
๐ ๋ฌธ์
์นด์นด์คํก์์๋ ์ด๋ชจํฐ์ฝ์ ๋ฌด์ ํ์ผ๋ก ์ฌ์ฉํ ์ ์๋ ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ์๋น์ค ๊ฐ์
์ ์๋ฅผ ๋๋ฆฌ๋ ค๊ณ ํฉ๋๋ค.
์ด๋ฅผ ์ํด ์นด์นด์คํก์์๋ ์ด๋ชจํฐ์ฝ ํ ์ธ ํ์ฌ๋ฅผ ํ๋๋ฐ, ๋ชฉํ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ์๋น์ค ๊ฐ์
์๋ฅผ ์ต๋ํ ๋๋ฆฌ๋ ๊ฒ.
์ด๋ชจํฐ์ฝ ํ๋งค์ก์ ์ต๋ํ ๋๋ฆฌ๋ ๊ฒ.
1๋ฒ ๋ชฉํ๊ฐ ์ฐ์ ์ด๋ฉฐ, 2๋ฒ ๋ชฉํ๊ฐ ๊ทธ ๋ค์์
๋๋ค.
์ด๋ชจํฐ์ฝ ํ ์ธ ํ์ฌ๋ ๋ค์๊ณผ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์งํ๋ฉ๋๋ค.
n๋ช
์ ์นด์นด์คํก ์ฌ์ฉ์๋ค์๊ฒ ์ด๋ชจํฐ์ฝ m๊ฐ๋ฅผ ํ ์ธํ์ฌ ํ๋งคํฉ๋๋ค.
์ด๋ชจํฐ์ฝ๋ง๋ค ํ ์ธ์จ์ ๋ค๋ฅผ ์ ์์ผ๋ฉฐ, ํ ์ธ์จ์ 10%, 20%, 30%, 40% ์ค ํ๋๋ก ์ค์ ๋ฉ๋๋ค.
์นด์นด์คํก ์ฌ์ฉ์๋ค์ ๋ค์๊ณผ ๊ฐ์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ด๋ชจํฐ์ฝ์ ์ฌ๊ฑฐ๋, ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ์๋น์ค์ ๊ฐ์
ํฉ๋๋ค.
๊ฐ ์ฌ์ฉ์๋ค์ ์์ ์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ผ์ ๋น์จ ์ด์ ํ ์ธํ๋ ์ด๋ชจํฐ์ฝ์ ๋ชจ๋ ๊ตฌ๋งคํฉ๋๋ค.
๊ฐ ์ฌ์ฉ์๋ค์ ์์ ์ ๊ธฐ์ค์ ๋ฐ๋ผ ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค ๋น์ฉ์ ํฉ์ด ์ผ์ ๊ฐ๊ฒฉ ์ด์์ด ๋๋ค๋ฉด,
์ด๋ชจํฐ์ฝ ๊ตฌ๋งค๋ฅผ ๋ชจ๋ ์ทจ์ํ๊ณ ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ์๋น์ค์ ๊ฐ์
ํฉ๋๋ค.
์นด์นด์คํก ์ฌ์ฉ์ n๋ช
์ ๊ตฌ๋งค ๊ธฐ์ค์ ๋ด์ 2์ฐจ์ ์ ์ ๋ฐฐ์ด users, ์ด๋ชจํฐ์ฝ m๊ฐ์ ์ ๊ฐ๋ฅผ ๋ด์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด emoticons
ํ์ฌ ๋ชฉ์ ์ ์ต๋ํ์ผ๋ก ๋ฌ์ฑํ์ ๋์ ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ์๋น์ค ๊ฐ์
์์ ์ด๋ชจํฐ์ฝ ๋งค์ถ์ก์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด์ ๋ด์ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด์ฃผ์ธ์.
๐งก ์ ํ ์ฌํญ
์ ํ์ฌํญ
1 โค users์ ๊ธธ์ด = n โค 100
users์ ์์๋ [๋น์จ, ๊ฐ๊ฒฉ]์ ํํ์
๋๋ค.
users[i]๋ i+1๋ฒ ๊ณ ๊ฐ์ ๊ตฌ๋งค ๊ธฐ์ค์ ์๋ฏธํฉ๋๋ค.
๋น์จ% ์ด์์ ํ ์ธ์ด ์๋ ์ด๋ชจํฐ์ฝ์ ๋ชจ๋ ๊ตฌ๋งคํ๋ค๋ ์๋ฏธ์
๋๋ค.
1 โค ๋น์จ โค 40
๊ฐ๊ฒฉ์ด์์ ๋์ ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค์ ์ฌ์ฉํ๋ค๋ฉด, ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค๋ฅผ ๋ชจ๋ ์ทจ์ํ๊ณ ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค ์๋น์ค์ ๊ฐ์
ํ๋ค๋ ์๋ฏธ์
๋๋ค.
100 โค ๊ฐ๊ฒฉ โค 1,000,000
๊ฐ๊ฒฉ์ 100์ ๋ฐฐ์์
๋๋ค.
1 โค emoticons์ ๊ธธ์ด = m โค 7
emoticons[i]`๋ i+1๋ฒ ์ด๋ชจํฐ์ฝ์ ์ ๊ฐ๋ฅผ ์๋ฏธํฉ๋๋ค.
100 โค emoticons์ ์์ โค 1,000,000
emoticons์ `์์๋ 100์ ๋ฐฐ์์
๋๋ค.
๐ ์
์ถ๋ ฅ
users emoticons result
[[40, 10000], [25, 10000]] [7000, 9000] [1, 5400]
[[40, 2900], [23, 10000], [1300, 1500, 1600, 4900] [4, 13860]
[11, 5200], [5, 5900],
[40, 3100], [27, 9200], [32, 6900]]
"""
# ์ค๋ณต์์ด(itertools์ product)
from itertools import product
def solution(users, emoticons):
answer = []
# ์ด๋ชจํฐ์ฝ์ ํ ์ธ์จ
sales = [10, 20, 30, 40]
# tertools.product('ABCD', repeat=2)
# ๊ฒฐ๊ณผ: AA AB AC AD BA BB BC BD CA CB => ์ค์ฒฉ๋ for loop์ ํด๋นํ๋ ๋ฐ์นด๋ฅดํธ์ ๊ณฑ
for i in product(sales, repeat=len(emoticons)):
# ๊ฐ์
์ ์, ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค ๊ฐ๊ฒฉ ๋์
result = [0, 0]
# users : [๋น์จ, ๊ฐ๊ฒฉ]
for user in users:
temp = 0
for j, k in enumerate(i):
# ์ด๋ชจํฐ์ฝ ํ ์ธ์จ์ด ์ ์ ๊ฐ ์ํ๋ ํ ์ธ์จ ์ด์์ด๋ฉด ๊ตฌ๋งค
if k >= user[0]:
temp += emoticons[j] * (100 - k) // 100
# ์ ์ ๊ฐ๊ฒฉ๋ณด๋ค ์ด๊ณผํ๋ ๊ฒฝ์ฐ ์ด๋ชจํฐ์ฝ ํ๋ฌ์ค์ ๊ฐ์
if temp >= user[1]:
result[0] += 1 # ๊ฐ์
์ ์นด์ดํธ +1
else:
result[1] += temp # ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค ๊ฐ๊ฒฉ ๋์
# ํด๋น ํ ์ธ์จ ๊ฒฝ์ฐ์์ ๊ตฌํ ๊ฒฐ๊ณผ๊ฐ์ answer์ ์ถ๊ฐ
answer.append(result)
# ๊ฐ์
์ ์ต๋, ์ด๋ชจํฐ์ฝ ํ๋งค์ก ์ต๋๋ก ์ ๋ ฌ
answer.sort(key=lambda x: (-x[0], -x[1]))
# ๊ฐ์ฅ ์ต๋ ์ฒซ ๋ฒ์งธ ์ถ๋ ฅ
return answer[0]
์ ํ์ฑ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
ํ ์คํธ 1 ใ ํต๊ณผ (0.07ms, 10.2MB) ํ ์คํธ 2 ใ ํต๊ณผ (0.16ms, 10.1MB) ํ ์คํธ 3 ใ ํต๊ณผ (0.42ms, 10.1MB) ํ ์คํธ 4 ใ ํต๊ณผ (2.08ms, 10.2MB) ํ ์คํธ 5 ใ ํต๊ณผ (4.53ms, 10.3MB) ํ ์คํธ 6 ใ ํต๊ณผ (1.98ms, 10.1MB) ํ ์คํธ 7 ใ ํต๊ณผ (37.34ms, 10.3MB) ํ ์คํธ 8 ใ ํต๊ณผ (15.45ms, 10.3MB) ํ ์คํธ 9 ใ ํต๊ณผ (95.57ms, 10.6MB) ํ ์คํธ 10 ใํต๊ณผ (42.14ms, 11MB) ํ ์คํธ 11 ใํต๊ณผ (417.89ms, 10.9MB) ํ ์คํธ 12 ใํต๊ณผ (214.00ms, 13.7MB) ํ ์คํธ 13 ใํต๊ณผ (1978.58ms, 14.2MB) ํ ์คํธ 14 ใํต๊ณผ (1790.68ms, 14.2MB) ํ ์คํธ 15 ใํต๊ณผ (96.78ms, 10.3MB) ํ ์คํธ 16 ใํต๊ณผ (116.31ms, 10.5MB) ํ ์คํธ 17 ใํต๊ณผ (0.43ms, 10.2MB) ํ ์คํธ 18 ใํต๊ณผ (27.02ms, 10.3MB) ํ ์คํธ 19 ใํต๊ณผ (0.06ms, 10.3MB) ํ ์คํธ 20 ใํต๊ณผ (0.05ms, 10.1MB)
3. ํด์ค
์ด๋ชจํฐ์ฝ ํ ์ธ์ ์ ์ฉํ๋ฉฐ ์ ์ ๊ฐ๊ฒฉ๋ณด๋ค ์ด๊ณผํ๊ฑฐ๋ ๋ฏธ๋ง์ผ ๋๋ง๋ค result ์ ๊ฐ์ ์ ์, ์ด๋ชจํฐ์ฝ ๊ตฌ๋งค ๊ฐ๊ฒฉ ๋์ ํ๋ค.
๋ง์ง๋ง์ ๋ด๋ฆผ์ฐจ์์ผ๋ก ์ต๋ ์ ๋ ฌ ํ ํ ์ฒซ ๋ฒ์งธ ๊ฐ์ (์ต๋) ๋ถ๋ฌ์จ๋ค
This post is licensed under CC BY 4.0 by the author.