๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
  • ์žฅ์›์ต ๊ธฐ์ˆ ๋ธ”๋กœ๊ทธ
๐Ÿ’ป Computer Science/- Data Structure, Algorithm

[์•Œ๊ณ ๋ฆฌ์ฆ˜-PS] ๋ฐฑ์ค€ 18111๋ฒˆ ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ์ž๋ฐ” ๋ฌธ์ œํ’€์ด

by Wonit 2021. 7. 12.

๋ฌธ์ œ

ํ•ด๋‹น ํฌ์ŠคํŒ…์€ ๋ฐฑ์ค€์˜ 18111๋ฒˆ ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ ์˜ ์ ‘๊ทผ๊ณผ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์„ค๋ช…ํ•œ ๊ธ€ ์ž…๋‹ˆ๋‹ค.
์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

 

18111๋ฒˆ: ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ

ํŒ€ ๋ ˆ๋“œ์‹œํ”„ํŠธ๋Š” ๋Œ€ํšŒ ์ค€๋น„๋ฅผ ํ•˜๋‹ค๊ฐ€ ์ง€๋ฃจํ•ด์ ธ์„œ ์ƒŒ๋“œ๋ฐ•์Šค ๊ฒŒ์ž„์ธ ‘๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ’๋ฅผ ์ผฐ๋‹ค. ๋งˆ์ธํฌ๋ž˜ํ”„ํŠธ๋Š” 1 × 1 × 1(์„ธ๋กœ, ๊ฐ€๋กœ, ๋†’์ด) ํฌ๊ธฐ์˜ ๋ธ”๋ก๋“ค๋กœ ์ด๋ฃจ์–ด์ง„ 3์ฐจ์› ์„ธ๊ณ„์—์„œ ์ž์œ ๋กญ๊ฒŒ

www.acmicpc.net

 

์ด ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด ์–ด๋–ค ๋ฐฉ์‹์œผ๋กœ ์ ‘๊ทผํ•ด์•ผ ํ•˜๋Š”์ง€๋ฅผ ๋จผ์ € ์ƒ๊ฐํ•ด๋ณด์ž.

 

๋ฌธ์ œ ์ ‘๊ทผ

 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์ž…๋ ฅ์„ ๋ณด๊ณ  ์–ด๋–ค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ํ’€์–ด์•ผํ• ์ง€ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

 

์šฐ์„  ๋ฐฐ์—ด์€ 500 x 500 ํฌ๊ธฐ์˜ ๋ฐฐ์—ด์ด ๋“ค์–ด์˜ค๊ณ  B ์—๋Š” ์ตœ๋Œ€ 6์–ต 4์ฒœ์˜ ๋ธ”๋ก์ด ์กด์žฌํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ทธ๋Ÿผ ์ตœ์•…์˜ ๊ฒฝ์šฐ n์˜ 3์ œ๊ณฑ์ด 1์ฒœ๋งŒ ์ •๋„ ๋˜๋‹ˆ ๋ธŒ๋ฃจํŠธ ํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์ด์šฉํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

๋ธŒ๋ฃจํŠธํฌ์Šค ์•Œ๊ณ ๋ฆฌ์ฆ˜์œผ๋กœ ๋ชจ๋“  ๊ฒฝ์šฐ๋ฅผ ํ™•์ธํ•˜๋”๋ผ๋„ ์ถฉ๋ถ„ํžˆ ์ปค๋ฒ„๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค.

 

ํ•ด๊ฒฐ๋ฒ•

 

์ด ๋ฌธ์ œ์˜ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์€ ๋ธŒ๋ฃจํŠธํฌ์Šค๋กœ 0์ธต ๋ถ€ํ„ฐ 256์ธต๊นŒ์ง€ ๋ชจ๋“  ๋ธ”๋Ÿญ์„ ํ‰ํ‰ํ•˜๊ฒŒ ๋งŒ๋“œ๋Š”๋ฐ ํ•„์š”ํ•œ ์‹œ๊ฐ„์˜ ์ตœ์†Œ๋ฅผ ๋งค๋ฒˆ ๋น„๊ตํ•˜๋ฉด ๋œ๋‹ค.

 

์กฐ๊ธˆ ๋” ์ƒ๊ฐ์„ ํ•ด๋ณด๋ฉด 0์ธต ๋ถ€ํ„ฐ๊ฐ€ ์•„๋‹ˆ๋ผ ์กด์žฌํ•˜๋Š” ๋ธ”๋ก ์ค‘ ๊ฐ€์žฅ ์ž‘์€ ์ธต ์—์„œ ์กด์žฌํ•˜๋Š” ๋ธ”๋ก์ค‘ ๊ฐ€์žฅ ๋†’์€ ์ธต ์‚ฌ์ด์— ๋ฒ”์œ„๋งŒ ๊ฐ€๋Šฅํ•˜๋ฏ€๋กœ ์ž…๋ ฅ์„ ๋ฐ›์„ ๋•Œ ์ตœ์†Œ์™€ ์ตœ๋Œ€ ๋†’์ด๋ฅผ ๊ฐ๊ฐ ์ง€์ •ํ•˜๊ณ  ์ธต์ˆ˜ ๋ฐ˜๋ณต์„ ๋Œ ๋•Œ ํ•ด๋‹น ์ตœ๋Œ€ ์ตœ์†Œ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋Œ๋ฉด ๋œ๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

public class B18111 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String[] nmb = br.readLine().split(" ");
        int n = Integer.parseInt(nmb[0]);
        int m = Integer.parseInt(nmb[1]);
        int b = Integer.parseInt(nmb[2]);

        int[][] ground = new int[n][m];

        int min = Integer.MAX_VALUE;
        int max = Integer.MIN_VALUE;

        for (int i = 0; i < ground.length; i++) {

            String[] groundRow = br.readLine().split(" ");

            for (int j = 0; j < m; j++) {
                int value = Integer.parseInt(groundRow[j]);
                ground[i][j] = value;

                max = Math.max(max, value);
                min = Math.min(min, value);
            }
        }

        int answerSeconds = Integer.MAX_VALUE; // ์‹œ๊ฐ„
        int answerHeight = -1; // ์ธต

        for (int i = min; i <= max; i++) { // ์ตœ์†Œ์ธต ๋ถ€ํ„ฐ ์ตœ๋Œ€์ธต ๊นŒ์ง€

            int seconds = 0;
            int inventory = b;

            for (int j = 0; j < ground.length; j++) {
                for (int k = 0; k < ground[j].length; k++) {
                    int diff = ground[j][k] - i;

                    if(diff > 0) { // ์ œ๊ฑฐํ•ด์•ผ ํ•จ
                        seconds += Math.abs(diff) * 2;
                        inventory += Math.abs(diff);
                    }else if(diff < 0){ // ์ถ”๊ฐ€ํ•ด์•ผ ํ•จ
                        seconds += Math.abs(diff);
                        inventory -= Math.abs(diff);
                    }
                }
            }

            if(inventory >= 0) {
                if(seconds <= answerSeconds) { // == ๊ฐ€ ํฌํ•จ๋˜์–ด์•ผ ํ•จ ใ…‡๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด ์ตœ๋Œ€ ๋†’์ด๋ฅผ ํŒ๋ณ„ ํ•˜์ง€ ๋ชปํ•จ
                    answerSeconds = seconds;
                    answerHeight = i;
                }
            }
        }

        bw.write(answerSeconds + " " + answerHeight);

        bw.flush();
        bw.close();
    }
}

 

์ •๋‹ต ์†Œ์Šค ์ฝ”๋“œ๋ฅผ ํ™•์ธํ•˜์‹œ๋ ค๋ฉด solve url ์—์„œ ํ™•์ธ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๋Œ“๊ธ€