

https://www.acmicpc.net/problem/31418
BFS๋ก ์ฒ์์ ์ ๊ทผํ์ผ๋, W, H, T๊ฐ ์ต๋ 10^6์ธ๊ฑธ ํ์ธํ๊ณ ์์ ํ์์ด ์๋ ๊ฑธ ์์๋ค...
ํธ๋ ๋์ ์ฌ๊ณ ๊ณผ์
import java.io.BufferedReader; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStreamReader; import java.util.StringTokenizer; public class Main { static long w, h, k, t; static int[] di = {-1, -1, 0, 1, 1, 1, 0, -1}; static int[] dj = {0, 1, 1, 1, 0, -1, -1, -1}; static long mod = 998244353; static long ans; public static void main(String[] args) throws IOException { // System.setIn(new FileInputStream("res/input.txt")); BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine(), " "); w = Long.parseLong(st.nextToken()); h = Long.parseLong(st.nextToken()); k = Long.parseLong(st.nextToken()); t = Long.parseLong(st.nextToken()); ans = 1; for (int i = 1; i <= k; i++) { st = new StringTokenizer(br.readLine(), " "); // i๋ฒ์งธ ๋ฐ์ด๋ฌ์ค ์์น long x = Long.parseLong(st.nextToken()); long y = Long.parseLong(st.nextToken()); go(x, y); } System.out.println(ans); } public static void go(long x, long y) { long wCase = Math.min(w, x + t) - Math.max(1, x - t) + 1; long hCase = Math.min(h, y + t) - Math.max(1, y - t) + 1; ans = (ans * wCase) % mod; ans = (ans * hCase) % mod; } }
๋ง์ด ์ข ์ด๋ ต๋ค.

๋๊ฐ์ ๋ ์ด๋ํ ์ ์๊ธฐ ๋๋ฌธ์, t์ด์ผ ๋ ์ด๋ํ ์ ์๋ ๋ฒ์๋ ์ ์ฌ๊ฐํ์ด ๋๋ค. ๋ํ ๊ฐ ๋ฐ์ด๋ฌ์ค๊ฐ ๋ ๋ฆฝ์ ์ด๊ธฐ ๋๋ฌธ์ ๊ฐ ๋ฐ์ด๋ฌ์ค์ ์ด๋ ๊ฒฝ์ฐ์ ์๋ฅผ ๋ค ๊ฐ๊ฐ ๊ณฑํด๋ฒ๋ฆฌ๋ฉด ๋๋ค.
์ด๋ ๋ฒ์๊ฐ ๊ณง ์ด๋ ๊ฒฝ์ฐ์ ์๊ฐ ๋๋ฏ๋ก, ๊ฐ๋ก์ ์ธ๋ก ์ด๋๋ฒ์๋ฅผ ์ฌ๊ฐํ ํํ๋ก ๊ณฑํด์ ์ฒ๋ฆฌํ๋ฉด ๋๋ค.
๊ฐ๋ก ์ด๋๋ฒ์๋ [max(1,xโT),min(W,x+T)]
(์ผ์ชฝ๋์์ ์ค๋ฅธ์ชฝ ๋๊น์ง) ์ธ๋ก ์ด๋๋ฒ์๋ [max(1,yโT),min(H,y+T)]
(๋งจ ์์์ ๋งจ ์๋๊น์ง) ๋ค.
์ด ๋ ์ด๋๋ฒ์๋ฅผ ๊ณฑํ๋ฉด ํด๋น ๋ฐ์ด๋ฌ์ค๊ฐ ๋ ๋ฆฝ์ ์ผ๋ก ์ฐจ์งํ ์ ์๋ ๊ฒฝ์ฐ์ ์๋ฅผ ์ ์ ์๊ฒ ๋๋ค. ์ฒ์ ๋ฌธ์ ๋ฅผ ์ฝ์์ ๋ ๋ถํฌ์ ๊ฐ๋ ์ด ์ด๊ฑฐ๋ผ๋ ๊ฒ ๋ฐ๋ก ์ดํด๊ฐ ๋์ง์์ ๋ ์ด๋ ค์ ๋ค.
max, min์ ์ฌ์ฉํ ์ด์ ๋ W, H๋ฅผ ๋์ด๊ฐ์ง ์๋๋ก ํด์ผ๋๋๊น ์ ํจ์ฑ ์ฒดํฌ ๊ฐ๋ ์ผ๋ก ๋ฃ์ด๋๋ค.
ans์๋ ๋์ ๊ณฑ์ ํด์ผ๋๋๋ฐ, ๋ฌธ์ ์์ mod ๊ฐ์ ์คฌ๊ธฐ ๋๋ฌธ์ ๋งค๋ฒ ๊ณฑํ ๋๋ง๋ค mod๋ฅผ ํด์ค์ผํ๋ค.
์ด๊ฒ ์กฐํฉ์ธ ๊ฑธ ๋ ์ฌ๋ฆฌ์ง ๋ชปํ์ ๊ฒฝ์ฐ์๋ ์์ ๋ชปํ์์ ๊ฒ ๊ฐ๋ค.
๋์์ด ๋๋ค๋ฉด ๋๊ธ์ด๋ ๊ณต๊ฐ ๋ฒํผ ํ ๋ฒ์ฉ ๋๋ฅด๊ณ ๊ฐ์ฃผ์ธ์!
'OJ๐ผ > ์ค๋ต๋ ธํธ๐' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][JAVA] 2559๋ฒ: ์์ด, 1912๋ฒ: ์ฐ์ํฉ, 2304๋ฒ: ์ฐฝ๊ณ ๋ค๊ฐํ - ๋์ ํฉ (0) | 2024.09.27 |
---|---|
[BOJ][JAVA] 1753๋ฒ: ์ต๋จ๊ฒฝ๋ก (0) | 2024.03.25 |
[BOJ][JAVA] 1149๋ฒ, 17404๋ฒ : RGB ๊ฑฐ๋ฆฌ1, RGB ๊ฑฐ๋ฆฌ2 (0) | 2024.03.19 |
[BOJ][JAVA] 7576๋ฒ : ํ ๋งํ (0) | 2024.03.19 |
[BOJ][JAVA] 17822๋ฒ: ์ํ๋๋ฆฌ๊ธฐ (0) | 2024.03.17 |