๐ ๋ฌธ์ ๋งํฌ
https://www.acmicpc.net/problem/15980
โธ ๋ฌธ์
ํ์ฑ์ ์ ๋น๋ก์ด ๋ฐ๋ฆผ ์์์ ์ํ ์ค์ธ ๊ทธ์ ์ค์น๋์ ๋๊ณ ์๋ค.
์ค๋์ ์ค์น๋์ด ๋๋ฌด ๋ฐ์ ์์ ๋ช ์์ ํ๊ณ ์๊ณ , ์ค์น๋ ์ฃผ๋ณ์๋ ์๋ค์ด ์์ ์๋ค. ์๋ค์ด ์ง์ ๊ท๋ฉด ์ค์น๋๊ป ๋ฐฉํด๊ฐ ๋ ์ ์๊ธฐ ๋๋ฌธ์, ํ์ฑ์ ๊ทธ ์ค ํ ๋ง๋ฆฌ๋ฅผ ์ก์ ์ง์ ๊ท์ง ๋ชปํ๊ฒ ํ์ฌ ์ค์น๋์ ๋ช ์์ ๋์ฐ๋ ค ํ๋ค.
์๋ N๋ง๋ฆฌ๊ฐ ์๊ณ , ๊ฐ๊ฐ ์ค์น๋์ ์ผํธ ๋๋ ์ค๋ฅธํธ์ ์์ ์๋ค. ์ค์น๋์ ์ ์ ์ด ๊ท ํ์ ์ด๋ฃจ๋๋ก ์ง์คํ๊ณ ์๋๋ฐ, ์ ์ ์ ์ค์ฌ์ ์ผํธ์ ์์ ์๊ฐ ์ง์ ๊ท๋ฉด ์์ ๋ฐฉํฅ์ผ๋ก, ์ค๋ฅธํธ์ ์์ ์๊ฐ ์ง์ ๊ท๋ฉด ์์ ๋ฐฉํฅ์ผ๋ก ์ด๋ํ๊ฒ ๋๋ค. ๊ฐ ์๊ฐ 1์ด๊ฐ ์ง์ ๊ท๋ฉด ์ ์ ์ ์ค์ฌ์ 1๋งํผ์ ์ํฅ์ ์ค๋ค. ์ค์น๋์ ์ด M์ด๊ฐ ๋ช ์ํ๋๋ฐ, ๋ช ์์ ํ๋ ์ค ์ ์ ์ ์ค์ฌ์ ์ ๋๊ฐ์ด ์ต๋๊ฐ ๋ ์๊ฐ, ๊ทธ ์ ๋๊ฐ์ด ์ค์น๋์ด ๋ฐฉํด๋ฅผ ๋ฐ์ ์ ๋๊ฐ ๋๋ค.
ํ์ฑ์ ์ง๊ธ๊น์ง์ ์๋ จ์ ํตํด ์๋ค์ ์ง์ ๊ท์ ์์ธกํ ์ ์๊ฒ ๋์๋ค. ํ์ฑ์ด ์ค์น๋์ด ๋ฐฉํด๋ฅผ ๊ฐ์ฅ ๋ ๋ฐ๊ฒ ํ๊ธฐ ์ํด ์ก์์ผ ํ ์๋ฅผ ๊ตฌํด๋ณด์. ์ค์น๋์ ์ ์ ์ ์ค์ฌ์ ์ฒ์์ 0์ด๊ณ , ๊ฐ ์๊ฐ ์ค์น๋์ ์ ์ ์ ์ค์ฌ์ ๋ฏธ์น๋ ์ํฅ์ ๋ชจ๋ ๋ ๋ฆฝ์ ์ด๋ฉฐ, ๊ทธ ์ํฅ์ ๋งค ์ด๊ฐ ๋๋ ๋๋ง๋ค ๋์์ ์ ์ฉ๋๋ค.
โธ ์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ ์ N๊ณผ M์ด ๊ณต๋ฐฑ์ ์ฌ์ด์ ๋๊ณ ์ฃผ์ด์ง๋ค.
๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ๊ฑธ์ณ ๊ฐ ์์ ๋ํ ์ ๋ณด๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ์์๋ ์ ๋ ฅ๋๋ ์์๋๋ก 1๋ถํฐ N๊น์ง์ ์ ์ ๋ฒํธ๊ฐ ์ฐจ๋ก๋ก ๋ถ์ด ์๋ค๊ณ ๊ฐ์ ํ๋ค. ์ฐ์ L๊ณผ R์ค ํ๋์ ๋ฌธ์๊ฐ ์ฃผ์ด์ง๋๋ฐ, L์ ๊ทธ ์๊ฐ ์ค์น๋์ ์ผ์ชฝ์ ์๋ค๋ ๋ป์ด๊ณ , R์ ์ค๋ฅธ์ชฝ์ ์๋ค๋ ๋ป์ด๋ค. ๊ทธ ํ ๊ณต๋ฐฑ์ด ํ๋ ์ฃผ์ด์ง ๋ค, 0๊ณผ 1๋ก ์ด๋ฃจ์ด์ง ๊ธธ์ด M์ ๋ฌธ์์ด์ด ์ฃผ์ด์ง๋ค. ๋ฌธ์์ด์ i๋ฒ์งธ ๋ฌธ์๋ i๋ฒ์งธ ์ด์ ๊ทธ ์๊ฐ ์ง์ ๊ท๋๊ฐ์ ๋ํ ์ฌ๋ถ์ด๊ณ , ์ด ๋ฌธ์๊ฐ 0์ด๋ฉด ์ง์ ๊ท์ง ์๋ ๊ฒ, 1์ด๋ฉด ์ง์ ๊ท๋ ๊ฒ์ด๋ค.
โธ ์ถ๋ ฅ
์ฒซ์งธ ์ค์๋ ํ์ฑ์ด ์ก์์ผ ํ ์์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ผ ์ก์ ์ ์๋ ์๊ฐ ์ฌ๋ฟ์ด๋ผ๋ฉด ๊ทธ ์ค ๊ฐ์ฅ ์์ ๋ฒํธ๋ฅผ ์ถ๋ ฅํ๋ค. ์๋ ๋ฐ๋์ ํ ๋ง๋ฆฌ ์ก์์ผ ํ๋ค.
๋์งธ ์ค์๋ ๊ทธ ์๋ฅผ ์ก์์ ๋ ์ค์น๋์ด ๋ฐฉํด๋ฐ๋ ์ ๋๋ฅผ ์ถ๋ ฅํ๋ค.
โธ ์ ํ
1 ≤ N,M ≤ 2000
๐ ๋ฌธ์ ์ ๋ณด
- ๐ฅ ๋ฌธ์ ๋ ๋ฒจ : ๊ณจ๋ 5
- ๐ ๋ฌธ์ ์ ํ : ๊ตฌํ, ๋ธ๋ฃจํธํฌ์ค ์๊ณ ๋ฆฌ์ฆ, ๋์ ํฉ
- ๐ฌ ํ์ด ์ธ์ด : JAVA
๐ค ๋ฌธ์ ํ์ด
์ด ๋ฌธ์ ๋ ์ค์น๋์ด ๋ช ์ ๋์ค ๊ฐ์ฅ ์ ๊ฒ ๋ฐฉํด๋ฐ๋๋ก, ์ก์์ผ ํ ์๋ฅผ ์ฐพ๋ ๋ฌธ์ ์ด๋ค.
์ด๋ ๋์ ํฉ(Prefix Sum)์ ํ์ฉํ์ฌ ํด๊ฒฐํ ์ ์๋ค.
๊ฐ ์๋ ๋งค ์ด ์ง์ ๊ท๋ฉฐ, ์ค์น๋์ ์ ์ ์ ๋ค์๊ณผ ๊ฐ์ ์ํฅ์ ์ค๋ค.
- ์ผ์ชฝ์ ์๋ ์๊ฐ ์ง์ ๊ท๋ฉด ์ ์ ์ ์ค์ฌ์ด -1๋งํผ ์ผ์ชฝ์ผ๋ก ์ด๋
- ์ค๋ฅธ์ชฝ์ ์๋ ์๊ฐ ์ง์ ๊ท๋ฉด ์ ์ ์ ์ค์ฌ์ด +1๋งํผ ์ค๋ฅธ์ชฝ์ผ๋ก ์ด๋
์ฌ๊ธฐ์ ์ฃผ์ํ ์ ์, ์ค์น๋์ด ๋ฐ์ ๋ฐฉํด์ ์ ๋๋ ๋ช ์ ์ข ๋ฃ ์์ ์ ๊ฐ์ด ์๋, ๋งค์ด ์ ์ ์ ์ค์ฌ์ด ์ผ๋ง๋ ํ๋ค๋ ธ๋์ง(์ ๋๊ฐ) ์ค ๊ฐ์ฅ ํฐ ๊ฐ์ด๋ผ๋ ์ ์ด๋ค.
๋จผ์ ๊ฐ ์ด๋ง๋ค ๋ชจ๋ ์๊ฐ ์ง์ ๊ท ์ํฅ์ ํฉ์ฐํด sum ๋ฐฐ์ด์ ๋ง๋ ๋ค.
์ด sum ๋ฐฐ์ด์ ์ด์ฉํด, ์ด๋ง๋ค ์ ์ ์ ์ค์ฌ ์์น๋ฅผ ๋์ ํฉ์ผ๋ก ๊ณ์ฐํ๋ค.
๊ทธ๋ฐ ๋ค์, ๊ฐ ์๋ฅผ ํ ๋ง๋ฆฌ์ฉ ์ ๊ฑฐํ๋ฉด์
๊ทธ ์๊ฐ ์ํฅ์ ์ค ๋ถ๋ถ๋ง sum ๋ฐฐ์ด์์ ๋นผ๊ณ , ๋ค์ ๋์ ํฉ์ ๊ณ์ฐํ์ฌ ํ๋ค๋ฆผ์ ์ต๋๊ฐ์ ๊ตฌํ๋ค.
๋ชจ๋ ์์ ๋ํด ์ด ์์ ์ ๋ฐ๋ณตํ๋ฉฐ, ์ค์น๋์ด ๊ฐ์ฅ ์ ๊ฒ ๋ฐฉํด๋ฐ๋ ๊ฒฝ์ฐ๋ฅผ ์ฐพ๋๋ค.
๋ง์ฝ ๋ฐฉํด ์ ๋๊ฐ ๋์ผํ ๊ฒฝ์ฐ๊ฐ ์ฌ๋ฌ ๊ฐ๋ผ๋ฉด, ๋ฒํธ๊ฐ ๊ฐ์ฅ ์์ ์๋ฅผ ์ ํํ๋ค.
์ ํ์ด๋ฅผ ์ฝ๋๋ก ์์ฑํด ๋ณด๋ฉด ์๋์ ๊ฐ๋ค.
โ ์ฝ๋
๋ฉ๋ชจ๋ฆฌ : 59504KB
์๊ฐ : 564ms
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken()); // ์์ ์
int m = Integer.parseInt(st.nextToken()); // ๋ช
์ ์๊ฐ (์ด)
int[][] birds = new int[n+1][m]; // i๋ฒ ์๊ฐ j์ด์ ์ค์น๋์ ์ ์ ์ ์ค ์ํฅ
int[] sum = new int[m]; // j์ด์ ์ ์ฒด ์๋ค์ด ์ ์ ์ ์ค ์ํฅ์ ์ดํฉ
String sounds;
char dir;
for (int i = 1; i <= n; i++) {
st = new StringTokenizer(br.readLine());
dir = st.nextToken().charAt(0); // L ๋๋ R
sounds = st.nextToken(); // 0 : ์๊ฐ ์์ง์ ๊ท, 1 : ์๊ฐ ์ง์ ๊ท
for (int j = 0; j < m; j++) {
if (sounds.charAt(j) == '1') { // ์๊ฐ ์ง์ ๊ท
int value = dir == 'L' ? -1 : 1;
birds[i][j] = value;
sum[j] += value;
}
}
}
int num = 0; // ์ต์ ๋ฐฉํด๋ฅผ ์ค ์์ ๋ฒํธ
int level = Integer.MAX_VALUE; // ๊ทธ ์๋ฅผ ์ก์์ ๋ ์ค์น๋์ด ๋ฐฉํด๋ฐ๋ ์ ๋
for (int i = 1; i <= n; i++) {
int total = 0;
int maxTotal = 0; // ์ ๋๊ฐ ๊ธฐ์ค์ผ๋ก ์ ์ ์ด ๊ฐ์ฅ ํ๋ค๋ฆฐ ์๊ฐ์ ํฌ๊ธฐ
for (int j = 0; j < m; j++) {
total += sum[j] - birds[i][j]; // i๋ฒ ์๋ฅผ ์ ๊ฑฐํ์ ๋์ ์ํฅ
maxTotal = Math.max(maxTotal, Math.abs(total));
}
if (maxTotal < level) {
num = i;
level = maxTotal;
}
}
StringBuilder sb = new StringBuilder();
sb.append(num).append("\n").append(level);
System.out.println(sb.toString());
br.close();
}
}
์ง์ง ์ค๋๋ง์ ํผ ๋์ ํฉ ๋ฌธ์ ์๋๋ฐ,, ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์๊ฐ๋์ง ์์ ๊ฝค๋ ์ค๋ ๋ถ์ก๊ณ ์์๋ค.
์์ฆ ๋ฌธ์ ๋ ์ ์ฝํ๊ณ ์ํ ๊ธฐ๊ฐ ์จ ๊ฒ ๊ฐ๋ค.. ํ์ง๋ง ์คํธ๋ฆญ์ ์ฑ์์ผ์ง ๐ญ
'Algorithm > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Boj_1263] ์๊ฐ ๊ด๋ฆฌ (0) | 2025.05.11 |
---|---|
[Boj_17485] ์ง์ฐ์ ๋ฌ ์ฌํ (Large) (0) | 2025.04.24 |
[Boj_7579] ์ฑ (0) | 2025.03.25 |
[Boj_1577] ๋๋ก์ ๊ฐ์ (0) | 2025.03.19 |
[Boj_19542] ์ ๋จ์ง ๋๋ฆฌ๊ธฐ (0) | 2025.03.17 |