๐ข ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ
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
"""
ํ๋ฐฐ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐํ๊ธฐ
๐ ๋ฌธ์
๋น์ ์ ์ผ๋ ฌ๋ก ๋์ด๋ n๊ฐ์ ์ง์ ํ๋ฐฐ๋ฅผ ๋ฐฐ๋ฌํ๋ ค ํฉ๋๋ค.
๋ฐฐ๋ฌํ ๋ฌผ๊ฑด์ ๋ชจ๋ ํฌ๊ธฐ๊ฐ ๊ฐ์ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๋ด์ ๋ฐฐ๋ฌํ๋ฉฐ, ๋ฐฐ๋ฌ์ ๋ค๋๋ฉด์ ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์๋ค์ ์๊ฑฐํ๋ ค ํฉ๋๋ค.
๋ฐฐ๋ฌํ ํ๋ฐฐ๋ค์ ๋ชจ๋ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๋ด๊ฒจ์ ๋ฌผ๋ฅ์ฐฝ๊ณ ์ ๋ณด๊ด๋์ด ์๊ณ , i๋ฒ์งธ ์ง์ ๋ฌผ๋ฅ์ฐฝ๊ณ ์์ ๊ฑฐ๋ฆฌ i๋งํผ ๋จ์ด์ ธ ์์ต๋๋ค.
๋ํ i๋ฒ์งธ ์ง์ j๋ฒ์งธ ์ง๊ณผ ๊ฑฐ๋ฆฌ j - i๋งํผ ๋จ์ด์ ธ ์์ต๋๋ค. (1 โค i โค j โค n)
ํธ๋ญ์๋ ์ฌํ์ฉ ํ๋ฐฐ ์์๋ฅผ ์ต๋ cap๊ฐ ์ค์ ์ ์์ต๋๋ค.
ํธ๋ญ์ ๋ฐฐ๋ฌํ ์ฌํ์ฉ ํ๋ฐฐ ์์๋ค์ ์ค์ด ๋ฌผ๋ฅ์ฐฝ๊ณ ์์ ์ถ๋ฐํด ๊ฐ ์ง์ ๋ฐฐ๋ฌํ๋ฉด์, ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์๋ค์ ์๊ฑฐํด ๋ฌผ๋ฅ์ฐฝ๊ณ ์ ๋ด๋ฆฝ๋๋ค.
๊ฐ ์ง๋ง๋ค ๋ฐฐ๋ฌํ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์์ ์๊ฑฐํ ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ์๊ณ ์์ ๋,
ํธ๋ญ ํ๋๋ก ๋ชจ๋ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐ๋ฅผ ๋ง์น๊ณ ๋ฌผ๋ฅ์ฐฝ๊ณ ๊น์ง ๋์์ฌ ์ ์๋ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ ค ํฉ๋๋ค.
๊ฐ ์ง์ ๋ฐฐ๋ฌ ๋ฐ ์๊ฑฐํ ๋, ์ํ๋ ๊ฐ์๋งํผ ํ๋ฐฐ๋ฅผ ๋ฐฐ๋ฌ ๋ฐ ์๊ฑฐํ ์ ์์ต๋๋ค.
ํธ๋ญ์ ์ค์ ์ ์๋ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ์ต๋ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ cap, ๋ฐฐ๋ฌํ ์ง์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ n,
๊ฐ ์ง์ ๋ฐฐ๋ฌํ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ๋ด์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด deliveries์ ๊ฐ ์ง์์ ์๊ฑฐํ ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ๋ด์ 1์ฐจ์ ์ ์ ๋ฐฐ์ด pickups๊ฐ ๋งค๊ฐ๋ณ์๋ก ์ฃผ์ด์ง๋๋ค.
์ด๋, ํธ๋ญ ํ๋๋ก ๋ชจ๋ ๋ฐฐ๋ฌ๊ณผ ์๊ฑฐ๋ฅผ ๋ง์น๊ณ ๋ฌผ๋ฅ์ฐฝ๊ณ ๊น์ง ๋์์ฌ ์ ์๋ ์ต์ ์ด๋ ๊ฑฐ๋ฆฌ๋ฅผ return ํ๋๋ก solution ํจ์๋ฅผ ์์ฑํด ์ฃผ์ธ์.
๐งก ์ ํ ์ฌํญ
1 โค cap โค 50
1 โค n โค 100,000
deliveries์ ๊ธธ์ด = pickups์ ๊ธธ์ด = n
deliveries[i]๋ i+1๋ฒ์งธ ์ง์ ๋ฐฐ๋ฌํ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ๋ํ๋
๋๋ค.
pickups[i]๋ i+1๋ฒ์งธ ์ง์์ ์๊ฑฐํ ๋น ์ฌํ์ฉ ํ๋ฐฐ ์์์ ๊ฐ์๋ฅผ ๋ํ๋
๋๋ค.
0 โค deliveries์ ์์ โค 50
0 โค pickups์ ์์ โค 50
ํธ๋ญ์ ์ด๊ธฐ ์์น๋ ๋ฌผ๋ฅ์ฐฝ๊ณ ์
๋๋ค.
๐ ์
์ถ๋ ฅ
cap n deliveries pickups result
4 5 [1, 0, 3, 1, 2] [0, 3, 0, 4, 0] 16
2 7 [1, 0, 2, 0, 1, 0, 2] [0, 2, 0, 1, 0, 2, 0] 30
"""
# ํธ๋ญ์ ์ค์ ์ ์๋ ์ฌํ์ฉ ํ๋ฐฐ ์์์ ์ต๋ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ cap, ๋ฐฐ๋ฌํ ์ง์ ๊ฐ์๋ฅผ ๋ํ๋ด๋ ์ ์ n
def solution(cap, n, deliveries, pickups):
answer = 0
# ํ์ฌ ๋ฐฐ๋ฌ/์๊ฑฐ ๊ฐ๋ฅํ ํ๋ฐฐ ๊ฐ์
deliver = 0 # ๋จ์ ๋ฐฐ๋ฌ ๊ฐ๋ฅ
pick = 0 # ๋จ์ ์๊ฑฐ ๊ฐ๋ฅ
for i in range(n-1, -1, -1):
cnt = 0
# ํด๋น ์ง๊น์ง ํ ๋ฒ ๋ ์์ผ ํจ
while deliver < deliveries[i] or pick < pickups[i]:
# ๋ช ๋ฒ ์๋ค ๊ฐ๋ค ํด์ผ ํ๋์ง ํ์
cnt += 1
# ํธ๋ญ์ ์ค์ ์ ์๋ ์ต๋ ๊ฐ์
deliver += cap
pick += cap
deliver -= deliveries[i]
pick -= pickups[i]
# ๋ฐฐ์ก/์๊ฑฐ๋ฅผ ํ๋ฉด์ ์ด๋ํ ๊ฑฐ๋ฆฌ
# ํด๋น ์์น๊น์ง ์ด๋ํ ํ์(cnt)๋ฅผ ๊ณฑํด์ค ๋ค answer์ ๋ํด์ค๋ค
answer += (i + 1) * cnt
# ์๋ณต * 2
return answer * 2
์ ํ์ฑ
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
ํ ์คํธ 1 ใ ํต๊ณผ (0.01ms, 10.1MB) ํ ์คํธ 2 ใ ํต๊ณผ (0.01ms, 10.2MB) ํ ์คํธ 3 ใ ํต๊ณผ (0.01ms, 10.2MB) ํ ์คํธ 4 ใ ํต๊ณผ (0.01ms, 10.1MB) ํ ์คํธ 5 ใ ํต๊ณผ (0.03ms, 10.2MB) ํ ์คํธ 6 ใ ํต๊ณผ (0.01ms, 10.2MB) ํ ์คํธ 7 ใ ํต๊ณผ (0.38ms, 10.4MB) ํ ์คํธ 8 ใ ํต๊ณผ (0.72ms, 10.2MB) ํ ์คํธ 9 ใ ํต๊ณผ (2.08ms, 10.1MB) ํ ์คํธ 10 ใํต๊ณผ (1.87ms, 10.1MB) ํ ์คํธ 11 ใํต๊ณผ (1.69ms, 10.3MB) ํ ์คํธ 12 ใํต๊ณผ (1.57ms, 10.2MB) ํ ์คํธ 13 ใํต๊ณผ (0.91ms, 10.1MB) ํ ์คํธ 14 ใํต๊ณผ (1.22ms, 10.2MB) ํ ์คํธ 15 ใํต๊ณผ (23.13ms, 11.8MB) ํ ์คํธ 16 ใํต๊ณผ (271.49ms, 11.5MB) ํ ์คํธ 17 ใํต๊ณผ (68.59ms, 11.4MB) ํ ์คํธ 18 ใํต๊ณผ (31.40ms, 11.6MB) ํ ์คํธ 19 ใํต๊ณผ (31.33ms, 11.6MB) ํ ์คํธ 20 ใํต๊ณผ (34.18ms, 11.5MB)
3. ํด์ค
๋ค์์๋ถํฐ ํ๋ฐฐ, ์๊ฑฐ๋ฅผ ์์ํ๋ค
cap ๋ณด๋ค ํ๋ฐฐ, ์๊ฑฐ ์๊ฐ ๋ ์๋ค๋ฉด ๋ค์ ์์์ ์ผ๋ก ๊ฐ์ cap์ ๋ด์ ์ ์๋ ๋งํผ ๋ค์ ์ด๊ธฐํ ํด์ฃผ๊ณ cnt +=1 ์ ์ถ๊ฐํด์ค๋ค
์ค๋ ๊ธธ์ ์๊ฑฐ, ํ๋ฐฐ๋ ์ด์ฐจํผ ๊ฑฐ๋ฆฌ์ ๋ํด์ง๊ธฐ ๋๋ฌธ์ ๋ง์ง๋ง์ * 2 ํด์ค์ผ๋ก์จ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํด์ค
This post is licensed under CC BY 4.0 by the author.