[c++] BOJ 1309๋ฒˆ :: ๋™๋ฌผ์›

๋™๋ฌผ์›

๋ฌธ์ œ

์–ด๋–ค ๋™๋ฌผ์›์— ๊ฐ€๋กœ๋กœ ๋‘์นธ ์„ธ๋กœ๋กœ N์นธ์ธ ์•„๋ž˜์™€ ๊ฐ™์€ ์šฐ๋ฆฌ๊ฐ€ ์žˆ๋‹ค.

img

์ด ๋™๋ฌผ์›์—๋Š” ์‚ฌ์ž๋“ค์ด ์‚ด๊ณ  ์žˆ๋Š”๋ฐ ์‚ฌ์ž๋“ค์„ ์šฐ๋ฆฌ์— ๊ฐ€๋‘˜ ๋•Œ, ๊ฐ€๋กœ๋กœ๋„ ์„ธ๋กœ๋กœ๋„ ๋ถ™์–ด ์žˆ๊ฒŒ ๋ฐฐ์น˜ํ•  ์ˆ˜๋Š” ์—†๋‹ค. ์ด ๋™๋ฌผ์› ์กฐ๋ จ์‚ฌ๋Š” ์‚ฌ์ž๋“ค์˜ ๋ฐฐ์น˜ ๋ฌธ์ œ ๋•Œ๋ฌธ์— ๊ณจ๋จธ๋ฆฌ๋ฅผ ์•“๊ณ  ์žˆ๋‹ค.

๋™๋ฌผ์› ์กฐ๋ จ์‚ฌ์˜ ๋จธ๋ฆฌ๊ฐ€ ์•„ํ”„์ง€ ์•Š๋„๋ก ์šฐ๋ฆฌ๊ฐ€ 2*N ๋ฐฐ์—ด์— ์‚ฌ์ž๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๊ฐ€ ๋ช‡ ๊ฐ€์ง€์ธ์ง€๋ฅผ ์•Œ์•„๋‚ด๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•ด ์ฃผ๋„๋ก ํ•˜์ž. ์‚ฌ์ž๋ฅผ ํ•œ ๋งˆ๋ฆฌ๋„ ๋ฐฐ์น˜ํ•˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ๋„ ํ•˜๋‚˜์˜ ๊ฒฝ์šฐ์˜ ์ˆ˜๋กœ ์นœ๋‹ค๊ณ  ๊ฐ€์ •ํ•œ๋‹ค.

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์šฐ๋ฆฌ์˜ ํฌ๊ธฐ N(1≤N≤100,000)์ด ์ฃผ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์ฒซ์งธ ์ค„์— ์‚ฌ์ž๋ฅผ ๋ฐฐ์น˜ํ•˜๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ 9901๋กœ ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๋ฅผ ์ถœ๋ ฅํ•˜์—ฌ๋ผ.

์˜ˆ์ œ ์ž…๋ ฅ 1

4

์˜ˆ์ œ ์ถœ๋ ฅ 1

41

๋‚˜์˜ ๋‹ต

์ฝ”๋“œ
N ์ž…๋ ฅ ๋ฐ›๊ธฐ
sum = 1+2N (0๋งˆ๋ฆฌ, 1๋งˆ๋ฆฌ ๊ฒฝ์šฐ)
for(i:2๋งˆ๋ฆฌ~N๋งˆ๋ฆฌ) // N
    sum+=CageCal(i,2N)

CageCal(n,size): // n: ๋ช‡๋งˆ๋ฆฌ size: ์šฐ๋ฆฌ size
    tmp
    if(n==1)
        return size
    if(size๊ฐ€ ํ™€์ˆ˜)
        return CageCal(n,size+1)-CageCal(n-1,size-2)
    for(i:0~size-2n+1) // ์ง์ˆ˜๋งŒ
        tmp+=2*CageCal(n-1,size-(i+3))
    return tmp

=> ์‹œ๊ฐ„ ์ดˆ๊ณผ

=> ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ์–ป๊ธฐ

#include <iostream>

using namespace std;
int N;
int result[100001] = { 1,3 };

int main() {
    cin >> N;
    for (int i = 2; i <= N; i++) {
        result[i] = (result[i - 1] * 2 + result[i - 2])%9901;
    }
    cout << result[N]; // ์—ฌ๊ธฐ์„œ ๋‚˜๋ˆ„๋ฉด ์˜ค๋ฅ˜
}

=> ๊ทœ์น™์„ ์ฐพ์•„์„œ ์ ํ™”์‹์œผ๋กœ ๋Œ€์ฒดํ•˜์˜€๋‹ค.

ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค

1=>3
2=>7
3=>17
4=>41
30000 => 3066
50000 => 2404
100000 => 8379

๋‹ค๋ฅธ ๋‹ต

๊ทœ์น™์€ ์ฐพ์•˜์ง€๋งŒ ์ €๋ ‡๊ฒŒ ๋˜๋Š” ์ด์œ ๋ฅผ ๊นจ๋‹ซ์ง€ ๋ชปํ–ˆ๋Š”๋ฐ, ์•„๋ž˜์˜ ๋ธ”๋กœ๊ทธ์— ์ž˜ ์„ค๋ช…๋˜์–ด์žˆ๋‹ค.

http://wookje.dance/2017/08/05/boj-1309-%EB%8F%99%EB%AC%BC%EC%9B%90/

๋‹ค๋ฅธ ๊ฒฝ์šฐ์˜ ์ˆ˜๋กœ ๋‚˜๋ˆˆ ๋ฐฉ๋ฒ•๋„ ์žˆ๋‹ค.

http://isukorea.com/blog/home/waylight3/77

๋ฐ˜์‘ํ˜•