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

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 11727๋ฒˆ 2*n ํƒ€์ผ๋ง 2 ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 1. 26.

๋ฌธ์ œ

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

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

ํ•ด๊ฒฐ๋ฒ•

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์ง€๋‚œ 2n ํƒ€์ผ๋ง1๋ฌธ์ œ์™€ ์•„์ฃผ ๋น„์Šทํ•œ ๋ฌธ์ œ์ด๋‹ค.


๋Œ€์ถฉ ์ถœ์ œ ์˜๋„๋ฅผ ์ƒ๊ฐํ•ด๋ณด๋ฉด 2n ํƒ€์ผ๋ง์ด ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์˜ ๊ฐ’๊ณผ ๋˜‘๊ฐ™์•„์„œ ํ•ด๋‹น ๋ฌธ์ œ๋ฅผ ํ”ผ๋ณด๋‚˜์น˜๋กœ ํ’€์—ˆ๋Š”์ง€ ํ˜น์€ ์ •ํ™•ํžˆ ๋ฌธ์ œ ์ถœ์ œ ์˜๋„๋ฅผ ํŒŒ์•…ํ•˜๊ณ  ํ’€์—ˆ๋Š”์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ๊ฐ™๋‹ค.

์ ‘๊ทผ๋ฒ•

์ง€๋‚œ 2n ํƒ€์ผ๋ง์—์„œ๋Š” 2๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ํƒ€์ผ์ด ์กด์žฌํ–ˆ์ง€๋งŒ ์ด๋ฒˆ 2n ํƒ€์ผ๋ง์—๋Š” 3๊ฐ€์ง€ ์ข…๋ฅ˜์˜ ํƒ€์ผ์ด ์กด์žฌํ•œ๋‹ค.

  1. 1 x 2 ํƒ€์ผ
  2. 2 x 1 ํƒ€์ผ
  3. 2 x 2 ํƒ€์ผ

์ง€๋‚œ ๋ฌธ์ œ์˜ ์ ‘๊ทผ๊ณผ ๋น„์Šทํ•˜๊ฒŒ ์ด๋ฒˆ์—๋„ ๊ฐ๊ฐ์˜ ๊ฒฝ์šฐ๋ฅผ n-1 ๋ฒˆ์งธ ๋‹จ๊ณ„, n-2๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ ์ฐพ์•„๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

์ง€๋‚œ ๋ฌธ์ œ์™€ ๋‹ค๋ฅธ ์ ์ด ์žˆ๋‹ค๋ฉด 2 x 2 ํƒ€์ผ์ด ์ถ”๊ฐ€ ๋˜์—ˆ๋‹ค๋Š” ๊ฒƒ์ธ๋ฐ,


2 x 2 ํƒ€์ผ์€ 1 x 2 ํƒ€์ผ 2๊ฐœ์™€ ๋น„์Šทํ•œ ๋ชจ์–‘์œผ๋กœ ๋Œ€์ฒด๋  ์ˆ˜ ์žˆ๋‹ค.


์ด ๋ง์€ 1 x 2 ํƒ€์ผ์ด ๋“ค์–ด๊ฐˆ ์ˆ˜ ์žˆ๋Š” a(n-2)์— ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ 2๋ฒˆ ๋ฐ˜๋ณต๋  ์ˆ˜ ์žˆ๋‹ค๋Š” ์†Œ๋ฆฌ์ด๋‹ค.

 

์ด ๊ฒƒ์„ ์ ํ™”์‹์œผ๋กœ ๋ฐ”๊ฟ”๋ณด๋ฉด,

  1. 2 x (n-1) ๋ฒˆ์งธ ํƒ€์ผ์—์„œ 2 x 1 ํƒ€์ผ์ด ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ
  2. 2 x (n-2) ๋ฒˆ์จฐ ํƒ€์ผ์—์„œ 1 x 2 ํƒ€์ผ์ด 2๊ฐœ ํ•ฉ์ณ์ง„ ํ˜•ํƒœ์˜ ํƒ€์ผ์ด ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ
  3. 2 x (n-2) ๋ฒˆ์จฐ ํƒ€์ผ์—์„œ 2 x 2 ํƒ€์ผ์ด ์ถ”๊ฐ€๋œ ๊ฒฝ์šฐ

์˜ค๋‹ต ํ›„๋ณด

์ด๋ฒˆ์—๋„ ์—ญ์‹œ ๋ชจ๋“ˆ๋Ÿฌ ์—ฐ์‚ฐ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

import java.io.*;

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 n = Integer.parseInt(br.readLine());
        int[] arr = new int[1001];

        arr[1] = 1;
        arr[2] = 3;

        for (int i = 3; i <= n; i++) {
            arr[i] = (arr[i-2] * 2) + arr[i-1];
            arr[i] %= 10007;
        }

        bw.write(String.valueOf(arr[n]));
        bw.flush();
        bw.close();
    }
}

๋ฌธ์ œ ํšŒ๊ณ 

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ์ง€๋‚œ 2 x n ํƒ€์ผ๋ง์—์„œ ๋ฐฐ์šด ๋จน์€ ์Šคํ‚ฌ์„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์—ˆ๋‹ค.


ํ•˜์ง€๋งŒ ์•„์ง ์ ํ™”์‹์˜ ํŠน์„ฑ์„ ์ดํ•ดํ•˜์ง€ ๋ชปํ•œ ๊ฒƒ์ธ์ง€ ๊ณ„์† ์ค‘๋ณต์— ๋Œ€ํ•ด์„œ ์‹ ๊ฒฝ์“ฐ๊ฒŒ ๋œ๋‹ค.


์ค‘๋ณต์— ๋Œ€ํ•œ ์‹ ๊ฒฝ์„ ์“ด๋‹ค๋Š” ๊ฒƒ์€ ์ ํ™”์‹ ํŠน์„ฑ์„ ํ™•์‹คํžˆ ์ดํ•ดํ•˜์ง€ ์•Š์€ ๊ฒƒ์œผ๋กœ ์ƒ๊ฐ๋œ๋‹ค.

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

๋Œ“๊ธ€