๊ด€๋ฆฌ ๋ฉ”๋‰ด

๐˜š๐˜ญ๐˜ฐ๐˜ธ ๐˜ฃ๐˜ถ๐˜ต ๐˜ด๐˜ต๐˜ฆ๐˜ข๐˜ฅ๐˜บ

[๋ฐฑ์ค€] 2302๋ฒˆ: ๊ทน์žฅ ์ขŒ์„ - C++ ๋ณธ๋ฌธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ์ค€๋น„/๋ฐฑ์ค€

[๋ฐฑ์ค€] 2302๋ฒˆ: ๊ทน์žฅ ์ขŒ์„ - C++

.23 2022. 7. 21. 16:00
๋ฌธ์ œ

์–ด๋–ค ๊ทน์žฅ์˜ ์ขŒ์„์€ ํ•œ ์ค„๋กœ ๋˜์–ด ์žˆ์œผ๋ฉฐ ์™ผ์ชฝ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ 1๋ฒˆ๋ถ€ํ„ฐ N๋ฒˆ๊นŒ์ง€ ๋ฒˆํ˜ธ๊ฐ€ ๋งค๊ฒจ์ ธ ์žˆ๋‹ค. ๊ณต์—ฐ์„ ๋ณด๋Ÿฌ ์˜จ ์‚ฌ๋žŒ๋“ค์€ ์ž๊ธฐ์˜ ์ž…์žฅ๊ถŒ์— ํ‘œ์‹œ๋˜์–ด ์žˆ๋Š” ์ขŒ์„์— ์•‰์•„์•ผ ํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ, ์ž…์žฅ๊ถŒ์— 5๋ฒˆ์ด ์“ฐ์—ฌ ์žˆ์œผ๋ฉด 5๋ฒˆ ์ขŒ์„์— ์•‰์•„์•ผ ํ•œ๋‹ค. ๋‹จ, ์ž๊ธฐ์˜ ๋ฐ”๋กœ ์™ผ์ชฝ ์ขŒ์„ ๋˜๋Š” ๋ฐ”๋กœ ์˜ค๋ฅธ์ชฝ ์ขŒ์„์œผ๋กœ๋Š” ์ž๋ฆฌ๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด์„œ, 7๋ฒˆ ์ž…์žฅ๊ถŒ์„ ๊ฐ€์ง„ ์‚ฌ๋žŒ์€ 7๋ฒˆ ์ขŒ์„์€ ๋ฌผ๋ก ์ด๊ณ , 6๋ฒˆ ์ขŒ์„์ด๋‚˜ 8๋ฒˆ ์ขŒ์„์—๋„ ์•‰์„ ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ 5๋ฒˆ ์ขŒ์„์ด๋‚˜ 9๋ฒˆ ์ขŒ์„์—๋Š” ์•‰์„ ์ˆ˜ ์—†๋‹ค.

๊ทธ๋Ÿฐ๋ฐ ์ด ๊ทน์žฅ์—๋Š” “VIP ํšŒ์›”๋“ค์ด ์žˆ๋‹ค. ์ด ์‚ฌ๋žŒ๋“ค์€ ๋ฐ˜๋“œ์‹œ ์ž๊ธฐ ์ขŒ์„์—๋งŒ ์•‰์•„์•ผ ํ•˜๋ฉฐ ์˜† ์ขŒ์„์œผ๋กœ ์ž๋ฆฌ๋ฅผ ์˜ฎ๊ธธ ์ˆ˜ ์—†๋‹ค.

์˜ค๋Š˜ ๊ณต์—ฐ์€ ์ž…์žฅ๊ถŒ์ด ๋งค์ง„๋˜์–ด 1๋ฒˆ ์ขŒ์„๋ถ€ํ„ฐ N๋ฒˆ ์ขŒ์„๊นŒ์ง€ ๋ชจ๋“  ์ขŒ์„์ด ๋‹ค ํŒ”๋ ธ๋‹ค. VIP ํšŒ์›๋“ค์˜ ์ขŒ์„ ๋ฒˆํ˜ธ๋“ค์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์‚ฌ๋žŒ๋“ค์ด ์ขŒ์„์— ์•‰๋Š” ์„œ๋กœ ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์˜ ๊ฐ€์ง“์ˆ˜๋ฅผ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

์˜ˆ๋ฅผ ๋“ค์–ด์„œ, ๊ทธ๋ฆผ๊ณผ ๊ฐ™์ด ์ขŒ์„์ด 9๊ฐœ์ด๊ณ , 4๋ฒˆ ์ขŒ์„๊ณผ 7๋ฒˆ ์ขŒ์„์ด VIP์„์ธ ๊ฒฝ์šฐ์— <123456789>๋Š” ๋ฌผ๋ก  ๊ฐ€๋Šฅํ•œ ๋ฐฐ์น˜์ด๋‹ค. ๋˜ํ•œ <213465789> ์™€ <132465798> ๋„ ๊ฐ€๋Šฅํ•œ ๋ฐฐ์น˜์ด๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ <312456789> ์™€ <123546789> ๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š” ๋ฐฐ์น˜ ๋ฐฉ๋ฒ•์ด๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์—๋Š” ์ขŒ์„์˜ ๊ฐœ์ˆ˜ N์ด ์ž…๋ ฅ๋œ๋‹ค. N์€ 1 ์ด์ƒ 40 ์ดํ•˜์ด๋‹ค. ๋‘˜์งธ ์ค„์—๋Š” ๊ณ ์ •์„์˜ ๊ฐœ์ˆ˜ M์ด ์ž…๋ ฅ๋œ๋‹ค. M์€ 0 ์ด์ƒ N ์ดํ•˜์ด๋‹ค. ๋‹ค์Œ M ๊ฐœ์˜ ์ค„์—๋Š” ๊ณ ์ •์„์˜ ๋ฒˆํ˜ธ๊ฐ€ ์ž‘์€ ์ˆ˜๋ถ€ํ„ฐ ํฐ ์ˆ˜์˜ ์ˆœ์„œ๋กœ ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ์ž…๋ ฅ๋œ๋‹ค.

 

์ถœ๋ ฅ

์ฃผ์–ด์ง„ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋ฉด์„œ ์‚ฌ๋žŒ๋“ค์ด ์ขŒ์„์— ์•‰์„ ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์˜ ๊ฐ€์ง“์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ๋ฐฉ๋ฒ•์˜ ๊ฐ€์ง“์ˆ˜๋Š” 2,000,000,000์„ ๋„˜์ง€ ์•Š๋Š”๋‹ค. (2,000,000,000 < 231-1)


๋™์ ๊ณ„ํš๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ํ‘ธ๋Š” ๋ฌธ์ œ.

 

๊ทœ์น™์„ ์ฐพ๋‹ค๋ณด๋ฉด ์ด ์—ญ์‹œ .. ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์ด๋‹ค.

VIP์„์ด ์—†๋‹ค๊ณ  ๊ฐ€์ •ํ–ˆ์„ ๋•Œ ์ขŒ์„์„ ์˜ฎ๊ธธ ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋Š” ๋งจ ์•ž์˜ ์ขŒ์„์ด [1] ์ผ๋•Œ, ํ˜น์€ 1์ด ์ด๋™ํ•˜์—ฌ [2 1] ์ด ๋˜์—ˆ์„ ๋•Œ ๋‘๊ฐ€์ง€๋กœ ๋‚˜๋ˆŒ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ด๋ฅผ ์‹์œผ๋กœ ์ž‘์„ฑํ•˜๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

cinema[i] = cinema[i - 1] + cinema[i - 2]

 

N์€ 40 ์ดํ•˜์ด๊ธฐ ๋•Œ๋ฌธ์— ๋ชจ๋“  ๊ฒฝ์šฐ์˜ ํ”ผ๋ณด๋‚˜์น˜ ์ˆ˜์—ด์„ ๋จผ์ € ๊ตฌํ•ด์ฃผ๊ณ , VIP์„์— ํ•ด๋‹นํ•˜๋Š” ์ขŒ์„์„ ์ž…๋ ฅ๋ฐ›์œผ๋ฉฐ ์—ฐ์‚ฐ์„ ์ง„ํ–‰ํ•œ๋‹ค.

 

์ฝ”๋“œ
#include <cstdio>
#define MAX 41

int cinema[MAX];
int vip[MAX];

int main(void) {
    int N, M;
    scanf("%d %d", &N, &M);

    cinema[0] = 1;
    cinema[1] = 1;

    for(int i = 2; i < MAX; i++) {
        cinema[i] = cinema[i - 1] + cinema[i - 2];
    }

    int result = 1;
    for(int i = 1; i <= M; i++) {
        scanf("%d", &vip[i]);
        result *= cinema[vip[i] - vip[i - 1] - 1];
    }
    result *= cinema[N - vip[M]];

    printf("%d\n", result);
    return 0;
}
Comments