-
[Sliding Window] BOJ 10025 ๊ฒ์ผ๋ฅธ ๋ฐฑ๊ณฐAlgorithms in Python/baekjoon 2021. 2. 3. 14:11
๐ ๋ฐฑ์ค 10025 ๊ฒ์ผ๋ฅธ ๋ฐฑ๊ณฐ
โ ๋ฌธ์ ์ ํต์ฌ, ํ์ด ๊ณผ์
• x ์ขํ๋ง๋ค ์๋์ด๊ฐ ์๊ณ , ๊ฐ ์๋์ด ์์๋ g์ฉ์ ์ผ์์ด ๋ค์ด์๋ค.
=> arr ๋ฐฐ์ด์ ์ด๊ธฐํํ๊ณ , arr[x] = g ์ผ๋ก ์ ๋ ฅ๊ฐ์ ๋ฐ๋๋ค.
• ์จ๋ฒํธ๊ฐ ์ต์ ์ ์๋ฆฌ๋ฅผ ๊ณจ๋์ ๋ ์ผ์์ ํฉ์ ๊ตฌํ์์ค. ์ฆ, ์ผ์๋ค์ ํฉ์ ์ต๋๊ฐ์ ๊ตฌํด์ผ ํ๋ค.
=> ์๋ฒํธ์ ๋ฟ์ ์ ์๋ ๊ฑฐ๋ฆฌ์ ๋ง์ง๋ง ์์๊ฐ ์ฃผ์ด์ง x ์ขํ์ ์ต๋๊ฐ๋งํผ ์ด๋ํ์ ๋๊น์ง ๊ณ ๋ คํด์ผํ๋ค.
- ์ขํ์ ์ต๋๊ฐ max_x๋ฅผ ๊ตฌํ๋ค.
• ์๋ฒํธ๊ฐ ์๋ฆฌ๋ฅผ ์ก์ผ๋ฉด ์ข์ฐ๋ก k๋งํผ ๋จ์ด์ง ์๋์ด๊น์ง ๋ฟ์ ์ ์๋ค.
=> ์ด 2*k+1๋งํผ์ ๋ฒ์๊น์ง์ ์ผ์์ ํฉ์ ๊ตฌํ ์ ์๋ค.
=> ๋ฒ์๊ฐ 2*k+1๋ก ์ง์ ๋์ด์๊ณ , ๋ฒ์๋ฅผ ํ์นธ์ฉ ์ด๋์ํค๋ฉฐ ๋ฒ์์ ๋์ด max_x ์ ๋๋ฌํ๋ฉด ์ข ๋ฃํ๋ค.
- ๋ฒ์๋ ํ๋ฅผ ์ด์ฉํ์ฌ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ๋ฅผ ์ฌ์ฉํ๋ค.
- ํ ์์ ์์ ์ผ์๋ค์ ํฉ์ temp๋ผ๊ณ ์ ํ๊ณ , temp์ ๋ณ๊ฒฝ์ด ์์ ๋๋ง๋ค ์ต๋ํฉ max_value๋ฅผ ์ ๋ฐ์ดํธ ํ๋ค.
๋ฐฑ์ค ์์ 1) n = 4, k = 3
arr ๋ฐฐ์ด (arr[x] = g)
ํ ๊ณผ์
temp = 0, max_value = 0
...
temp = 7, max_value = 7
...
temp = 7, max_value = 7
...
temp = 11, max_value = 11
...
temp = 10, max_value = 11
max_value = 11
โ ์ ์ฒด ์ฝ๋
import sys from collections import deque input = sys.stdin.readline arr = [0] * 1000001 # arr[i] = ์ขํ๊ฐ i์ผ๋์ ์ผ์ g n, k = map(int, input().split()) queue = deque() max_x = 0 # ์ขํ ์ต๋๊ฐ for i in range(n): g, x = map(int, sys.stdin.readline().split()) arr[x] = g if x > max_x: max_x = x max_value = 0 # ์ผ์๋ค์ ์ต๋ํฉ temp = 0 # ๋ฒ์ ์์ ์์ ์ผ์๋ค์ ํฉ # ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฐฉ๋ฒ for x in range(max_x + 1): # ์๋ฒํธ์ ์ขํ ์ด๋ # ์๋ฒํธ๊ฐ ๋ฟ์ ์ ์๋ ๊ฑฐ๋ฆฌ๋ณด๋ค ํ์ ํฌ๊ธฐ๊ฐ ์์ผ๋ฉด ํ์ฌ ์ขํ์ ์ผ์ ์ถ๊ฐ if len(queue) < 2 * k + 1: queue.append(arr[x]) temp += arr[x] max_value = temp # ํ์์ popํ๋งํผ ์ผ์์ ์์ ํฉ์์ ๋นผ์ฃผ๊ณ , ํ์ฌ ์ขํ์ ์ผ์์ถ๊ฐ else: temp -= queue.popleft() queue.append(arr[x]) temp += arr[x] if temp > max_value: # ์ผ์๋ค์ ์ต๋ํฉ ์ ๋ฐ์ดํธ max_value = temp print(max_value)
'Algorithms in Python > baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Stack] BOJ 17299 ์ค๋ฑํฐ์ (0) 2021.02.03 [Prefix Sum] BOJ 20002 ์ฌ๊ณผ๋๋ฌด (0) 2021.02.03 [DFS/BFS] BOJ 18405 ๊ฒฝ์์ ์ ์ผ (0) 2021.02.01 [DFS/BFS] BOJ 16234 ์ธ๊ตฌ ์ด๋ (0) 2021.02.01 [Binary Search] BOJ 2470 ๋ ์ฉ์ก (0) 2021.01.27