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

[์•Œ๊ณ ๋ฆฌ์ฆ˜ PS] ๋ฐฑ์ค€ 2193๋ฒˆ ์ด์นœ์ˆ˜ ์ž๋ฐ” ๋ฌธ์ œ ํ’€์ด

by Wonit 2021. 1. 27.

๋ฌธ์ œ

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

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

ํ•ด๊ฒฐ๋ฒ•

์ด๋ฒˆ ๋ฌธ์ œ๋Š” DP๋กœ ํ•ด๊ฒฐํ•  ์ˆ˜ ์žˆ๋Š” ๋ฌธ์ œ์ค‘ ๊ฐ€์žฅ ์‰ฌ์šดํŽธ์— ์†ํ•œ๋‹ค.


ํ•˜์ง€๋งŒ n์ด 90๊นŒ์ง€ ๊ฐ€๋Šฅํ•  ๋•Œ Integer์˜ ๋ฒ”์œ„๋ฅผ ๋„˜๊ฒŒ ๋˜๋Š”๋ฐ ํ•ด๋‹น ๋ถ€๋ถ„๋งŒ ์ฃผ์˜ํ•˜๋ฉด ๋ ๋“ฏํ•˜๋‹ค.

์ ‘๊ทผ๋ฒ•

์ด์นœ์ˆ˜๊ฐ€ ๋  ์ˆ˜ ์žˆ๋Š” ์ˆ˜๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์ด ์žˆ๋‹ค.

  1. 0์œผ๋กœ ์‹œ์ž‘ํ•˜์ง€ ์•Š์„ ๊ฒƒ ex) 0101
  2. 1์ด ๋‘ ๋ฒˆ ์—ฐ์† ๋“ฑ์žฅํ•˜์ง€ ์•Š์„ ๊ฒƒ ex) 1101

n์ด ์ž‘์„ ๋•Œ๋Š” ์ถฉ๋ถ„ํžˆ ์†์œผ๋กœ ๊ณ„์‚ฐํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ง์ ‘ ๊ณ„์‚ฐํ•ด๋ณด๋ฉด์„œ ํŠน์ง•์„ ์ฐพ์•„ ์ ํ™”์‹์„ ๋„์ถœํ•ด๋ณด์ž.

n = 1;
a[n] = {1}; // 1

n = 2;
a[n] = {10}; // 1

n = 3;
a[n] = {100, 101} // 2

n = 4;
a[n] = {1000, 1010, 1001} // 3;

...

์ด ๋ฌธ์ œ๋Š” 2๊ฐ€์ง€ ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„์•ผ ํ•œ๋‹ค.

  • 0์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
  • 1์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ

0์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
์šฐ์„  n์ด ์ด์นœ์ˆ˜๊ฐ€ ๋˜๋ ค๋ฉด n-1๋ฒˆ์จฐ ์—์„œ 0์„ ๋ถ™ํžˆ๋ฉด ๋ฌด์กฐ๊ฑด ํ•ด๋‹น ์ˆ˜๋Š” ์ด์นœ์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

1์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ
์ด์ œ 1์ด ์˜ฌ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ๋ฅผ ์ฐพ์•„์•ผ ํ•˜๋Š”๋ฐ, n๋ณด๋‹ค ์ž‘์€ ์ˆ˜์— 1์„ ๋ฐ”๋กœ ๋ถ™์ผ ์ˆ˜ ์—†๋‹ค.


์™œ๋ƒ? ๋งŒ์•ฝ 1์ด ํ˜ผ์ž ์™”๋‹ค๊ฐ€ ์•ž์„  ์ˆ˜๊ฐ€ 1์ด๋ผ๋ฉด 11์ด ๋˜๋ฏ€๋กœ ์ด์นœ์ˆ˜์— ํ•ด๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.


๊ทธ๋ž˜์„œ 1์ด ์˜ค๊ธฐ ์œ„ํ•ด์„œ๋Š” 01์ด ์™€์•ผ ํ•œ๋‹ค.


๊ทธ๋Ÿผ 01์ด๋ผ๋Š” ์ˆ˜๊ฐ€ ๋ถ™์œผ๋ ค๋ฉด n-2 ๋ฒˆ์งธ ์ˆ˜์—์„œ ๋ถ™์–ด์•ผ ํ•˜๋ฏ€๋กœ n-2๋ฒˆ์งธ์™€ n-1๋ฒˆ์จฐ ์ˆ˜๋ฅผ ๋”ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

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

์ด๋ฒˆ ๋ฌธ์ œ์˜ ์ •๋‹ต๋ฅ ์€ 30ํผ์„ผํŠธ์ด๋‹ค.


์•„๋งˆ ์ด๋ฒˆ ๋ฌธ์ œ์—์„œ ๋งŽ์ด ํ‹€๋ ธ์„ ์ด์œ ๊ฐ€ n์ด ๊ณ„์† ์ฆ๊ฐ€ํ•˜๋‹ค Integer์˜ ๋ฒ”์œ„๋ณด๋‹ค ๋” ํฐ ์ˆ˜๋ฅผ ์ €์žฅํ•ด์•ผํ•  ๋•Œ ์ •์ˆ˜ ์˜ค๋ฒ„ํ”Œ๋กœ์šฐ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.


๊ทธ๋ž˜์„œ ์ถœ๋ ฅ ์ž๋ฃŒํ˜•์„ long์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•œ๋‹ค.

์ •๋‹ต ์ฝ”๋“œ

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());
        long[] dp = new long[91]; // n ์ž๋ฆฌ์˜ ์ด์นœ์ˆ˜ ๊ฐฏ์ˆ˜
        dp[0] = 0;
        dp[1] = dp[2] = 1;
        dp[3] = 2;

        for (int i = 4; i <= n; i++) {
            dp[i] = dp[i-1] + dp[i-2];
        }

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

๋ฌธ์ œ ํšŒ๊ณ 

๋ฌธ์ œ๋ฅผ ํ’€ ๋•Œ ์ฒ˜์Œ๋ถ€ํ„ฐ ๋ฌดํ„ฑ๋Œ€๊ณ  ๋“ค์–ด๊ฐ€๋Š” ์Šต๊ด€์€ ์กฐ๊ธˆ ์‹ ๊ฒฝ์“ฐ๊ธฐ ์‹œ์ž‘ํ–ˆ๋‹ค.
๋งŒ์•ฝ ์ด๋ฒˆ ๋ฌธ์ œ๋„ ์–ด๋–ป๊ฒŒ ํ•ด๊ฒฐํ• ์ง€ ์•Œ์•˜๋‹ค๊ณ  ํ•ด์„œ ๋ฌดํ„ฑ๋Œ€๊ณ  ๋“ค์–ด๊ฐ”๋”๋ผ๋ฉด, long ์ž๋ฃŒํ˜•์„ ์จ์•ผํ•œ๋‹ค๋Š” ๊ฒƒ๋„ ๋ชจ๋ฅด๊ณ  ํ•œ ๋ฒˆ์— ํ†ต๊ณผํ•˜๊ธฐ๋Š” ํž˜๋“ค์—ˆ์„ ๊ฒƒ์ด๋‹ค.
ํ•ด๋‹น ๋ฌธ์ œ๋Š” ์ž‘๋…„ ๊ต๋‚ด ์†Œํ”„ํŠธ์›จ์–ด ๊ฒฝ์ง„ ๋Œ€ํšŒ์—์„œ ๋งŒ๋‚ฌ๋˜ ๋ฌธ์ œ์ธ๋ฐ, ๊ฒฐ๊ตญ ํ’€์ง€ ๋ชปํ–ˆ๋˜ ๊ธฐ์–ต์ด ์žˆ๋‹ค.
๊ทธ ๋•Œ ๋‹น์‹œ์—๋Š” ์™€.. ์ด๊ฑด ์ฒœ์žฌ๋งŒ ํ’€์–ด ํ•˜๋Š” ๋ฌธ์ œ์˜€๋Š”๋ฐ DP๋ฅผ ์•Œ๊ณ  ๋ณด๋‹ˆ ์ •๋ง ๊ฐ„๋‹จํ•œ ๋ฌธ์ œ์˜€๋‹ค๋Š” ๊ฒƒ์— ์กฐ๊ธˆ ํ—ˆ๋ฌดํ•˜๋‹ค ใ…Žใ…Ž..

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

๋Œ“๊ธ€