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

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 9465 ์Šคํ‹ฐ์ปค ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 1. 27.

๋ฌธ์ œ

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

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

ํ•ด๊ฒฐ๋ฒ•

์Šคํ‹ฐ์ปค ๋ฌธ์ œ๋Š” ๋ฐฑ์ค€์˜ ๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ ๋ฌธ์ œ์™€ ๋น„์Šทํ•œ ๋…ผ๋ฆฌ๋กœ ํ’€ ์ˆ˜ ์žˆ๋‹ค.


๊ณ„๋‹จ ์˜ค๋ฅด๊ธฐ๋Š” 1์ฐจ์› ๋ฐฐ์—ด์ด์—ˆ๊ณ , ์ด๋ฒˆ ์Šคํ‹ฐ์ปค ๋ฌธ์ œ๋Š” 2์ฐจ์› ๋ฐฐ์—ด์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋œ๋‹ค.

 

์ ํ™”์‹ ์ž์ฒด๋ฅผ ๋„์ถœํ•ด๋‚ด๋Š” ๋ฐฉ๋ฒ•์€ ํฌ๊ฒŒ ์–ด๋ ต์ง€ ์•Š์•˜์ง€๋งŒ 2์ฐจ์› ๋ฐฐ์—ด์„ ๋‹ค๋ฃจ๋Š”๋ฐ์— ์กฐ๊ธˆ ์•„์‰ฌ์šด ์ ๋“ค์ด ์žˆ๋˜ ๋ฌธ์ œ์˜€๋‹ค.


์‹œ์ž‘ํ•ด๋ณด์ž.

์ ‘๊ทผ๋ฒ•

๋™์  ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ ํ•ต์‹ฌ์€ ํ˜„์žฌ ๋‹จ๊ณ„(๋ฐฐ์—ด์˜ ์ธ๋ฑ์Šค)์˜ ๊ฐ’์„ ๊ตฌํ•˜๋ ค๋ฉด ์ด์ „์˜ ์–ด๋–ค ๋‹จ๊ณ„(๋ฐฐ์—ด์˜ ์ด์ „ ์ธ๋ฑ์Šค)๋“ค์„ ๋”ํ•˜๋ฉด ๋ ์ง€๋ฅผ ์ƒ๊ฐํ•˜๋ฉด ์‰ฝ๊ฒŒ ํ’€๋ฆด ์ˆ˜ ์žˆ๋‹ค.

 

์Šคํ‹ฐ์ปค์˜ ๊ฐ€์ค‘์น˜๊ฐ€ ์ตœ๋Œ€๋กœ ๋˜๋ ค๋ฉด ํฐ ์ˆ˜๋งŒ ๋ณด๊ณ  ๋ฝ‘์œผ๋ฉด ๋œ๋‹ค.


ํ•˜์ง€๋งŒ ์ œ์•ฝ ์กฐ๊ฑด ํ•˜๋‚˜๊ฐ€ ์ถ”๊ฐ€๋œ๋‹ค.

 

  • ํ•œ ์žฅ์„ ๋–ผ๋ฉด ํ•ด๋‹น ์Šคํ‹ฐ์ปค์™€ ๋ณ€์„ ๊ณต์œ ํ•˜๋Š” ์Šคํ‹ฐ์ปค๋Š” ๋ชจ๋‘ ์ฐข์–ด์ ธ ์‚ฌ์šฉ ๋ถˆ๊ฐ€.

์ด ๋ง์€ [n][m] ์นธ์— ์Šคํ‹ฐ์ปค๋ฅผ ๋—€๋‹ค๋ฉด [n-1][m] [n+1][m], [n][m+1]์˜ ์Šคํ‹ฐ์ปค๋Š” ์‚ฌ์šฉํ•˜์ง€ ๋ชปํ•œ๋‹ค๋Š” ๋œป์ด๋‹ค.


๊ทธ๋Ÿผ [n][m] ๋ฒˆ ์งธ ์Šคํ‹ฐ์ปค๋Š” ๋ฌด์กฐ๊ฑด [n-1][m] ์Šคํ‹ฐ์ปค์™€ ํ•จ๊ป˜ ์“ฐ์ผ ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.


๊ธฐํ˜ธ๋กœ ํ•˜๋‹ˆ ํ—ท๊ฐˆ๋ฆด ์ˆ˜ ์žˆ๋Š”๋ฐ, ์ด ๋ง์€ ํ˜„์žฌ ๋œฏ์œผ๋ ค๋Š” ์Šคํ‹ฐ์ปค์˜ ๋Œ€๊ฐ์„  ์Šคํ‹ฐ์ปค๋งŒ ํ•จ๊ป˜ ๋œฏ์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๋œป์ด๋‹ค.

 

๋˜ํ•œ n-2๋ฒˆ์งธ ์Šคํ‹ฐ์ปค๋Š” ๋Œ€๊ฐ์„ ์ด๋˜ ์•„๋‹ˆ๋˜ ๋‘˜ ๋‹ค ์“ธ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ, n-2 ๋ฒˆ์งธ ์—ด์˜ ์Šคํ‹ฐ์ปค๋ฅผ ํฌํ•จํ•œ ํ˜„์žฌ ๊ฐ€์ค‘์น˜์™€ n-1๋ฒˆ์งธ ๋Œ€๊ฐ์„  ์Šคํ‹ฐ์ปค๋ฅผ ํฌํ•จํ•œ ํ˜„์žฌ ๊ฐ€์ค‘์น˜ ์ค‘ ๋” ํฐ ์ˆ˜๋ฅผ ๋ฝ‘์œผ๋ฉด ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ด๋‹ค.

 

๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด,

 

์ด์™€ ๊ฐ™์€ ๋ฐฐ์—ด์— 100์ด๋ผ๋Š” ์ˆ˜๊ฐ€ ์“ฐ์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ์•„๋ž˜ ํ‘œ์ฒ˜๋Ÿผ ํŒŒ๋ž€์ƒ‰์˜ ์ˆ˜๋งŒ ๊ฐ€๋Šฅํ•˜๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 



 

๊ทธ๋ฆฌ๊ณ  ์ด๋“ค์˜ ์ตœ๋Œ€์—์„œ ํ˜„์žฌ ๋ณด๊ณ ์žˆ๋Š” ์Šคํ‹ฐ์ปค์˜ ํ•ฉ์„ ๋ˆ„์ ํ•ด์ฃผ๊ณ  ๋ฐ˜๋ณต์„ ๋Œ๋ฆฌ๋ฉด ๋œ๋‹ค.

์ฃผ์˜ํ•˜์ž

์ด ๋ฐฐ์—ด์˜ ๋ฐ˜๋ณต์„ ๋‹ค๋ฃจ๊ธฐ ์œ„ํ•ด์„œ๋Š” ์šฐ๋ฆฌ๊ฐ€ ์ผ๋ฐ˜์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š” 2์ค‘ for loop์—์„œ ์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด์•ผ ํ•œ๋‹ค.

for (int i = 0; i < arr[0].length; i++) {
    for (int j = 0; j < 2; j++) {
        System.out.println(arr[j][i]);
    }
}

์ •๋‹ต ์ฝ”๋“œ

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

        int t = Integer.parseInt(br.readLine());
        while(t-- > 0) {
            int n = Integer.parseInt(br.readLine());
            int[][] d = new int[2][100001];
            String[] column = br.readLine().split(" ");
            d[0] = strArrToIntArr(column, n);
            column = br.readLine().split(" ");
            d[1] = strArrToIntArr(column, n);

            d[0][1] += d[1][0];
            d[1][1] += d[0][0];
            for(int i = 2; i < n; i++) {
                for(int j = 0; j < 2; j++) {
                    if(j == 0) {
                        d[j][i] += Math.max(d[1][i-1], Math.max(d[0][i-2], d[1][i-2]));
                    }else {
                        d[j][i] += Math.max(d[0][i-1], Math.max(d[0][i-2], d[1][i-2]));
                    }
                }
            }

            bw.write(findMaxNum(d) + "\n");
        }
        bw.flush();
        bw.close();
    }

    private static int findMaxNum(int[][] arr) {
        int max = 0;
        for (int i = 0; i < arr[0].length; i++) {
            for (int j = 0; j < 2; j++) {
                max = Math.max(arr[j][i], max);
            }
        }
        return max;
    }

    private static int[] strArrToIntArr(String[] arr, int size) {
        int[] ret = new int[arr.length];
        for(int i = 0; i < size; i++){
            ret[i] = Integer.parseInt(arr[i]);
        }
        return ret;
    }
}

๋ฌธ์ œ ํšŒ๊ณ 

ํšŒ๊ณ 

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

๋Œ“๊ธ€