[Boj_15980] ๋ช…์ƒ ๋ฐฉํ•ด๊พผ

๐Ÿ“Ž ๋ฌธ์ œ ๋งํฌ

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