1ํ•™๋…„ (2023)/C ์–ธ์–ด

[C] ๋ฐฑ์ค€/BAEKJOON 15651๋ฒˆ: N๊ณผ M (3)

waterproof 2023. 11. 22. 00:08

 

 

 https://www.acmicpc.net/problem/15651

 

15651๋ฒˆ: N๊ณผ M (3)

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค. ์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด

www.acmicpc.net


[1] ๋ฌธ์ œ

 

๋ฌธ์ œ

์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์กŒ์„ ๋•Œ, ์•„๋ž˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ๊ธธ์ด๊ฐ€ M์ธ ์ˆ˜์—ด์„ ๋ชจ๋‘ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.

  • 1๋ถ€ํ„ฐ N๊นŒ์ง€ ์ž์—ฐ์ˆ˜ ์ค‘์—์„œ M๊ฐœ๋ฅผ ๊ณ ๋ฅธ ์ˆ˜์—ด
  • ๊ฐ™์€ ์ˆ˜๋ฅผ ์—ฌ๋Ÿฌ ๋ฒˆ ๊ณจ๋ผ๋„ ๋œ๋‹ค.

 

์ž…๋ ฅ

์ฒซ์งธ ์ค„์— ์ž์—ฐ์ˆ˜ N๊ณผ M์ด ์ฃผ์–ด์ง„๋‹ค. (1 โ‰ค M โ‰ค N โ‰ค 7)

 

์ถœ๋ ฅ

ํ•œ ์ค„์— ํ•˜๋‚˜์”ฉ ๋ฌธ์ œ์˜ ์กฐ๊ฑด์„ ๋งŒ์กฑํ•˜๋Š” ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค. ์ค‘๋ณต๋˜๋Š” ์ˆ˜์—ด์„ ์—ฌ๋Ÿฌ ๋ฒˆ ์ถœ๋ ฅํ•˜๋ฉด ์•ˆ๋˜๋ฉฐ, ๊ฐ ์ˆ˜์—ด์€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„ํ•ด์„œ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

์ˆ˜์—ด์€ ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•œ๋‹ค.

 

์˜ˆ์ œ ์ž…๋ ฅ 1 

3 1

์˜ˆ์ œ ์ถœ๋ ฅ 1

1
2
3

์˜ˆ์ œ ์ž…๋ ฅ 2

4 2

์˜ˆ์ œ ์ถœ๋ ฅ 2

1 1
1 2
1 3
1 4
2 1
2 2
2 3
2 4
3 1
3 2
3 3
3 4
4 1
4 2
4 3
4 4

์˜ˆ์ œ ์ž…๋ ฅ 3

3 3

์˜ˆ์ œ ์ถœ๋ ฅ 3

1 1 1
1 1 2
1 1 3
1 2 1
1 2 2
1 2 3
1 3 1
1 3 2
1 3 3
2 1 1
2 1 2
2 1 3
2 2 1
2 2 2
2 2 3
2 3 1
2 3 2
2 3 3
3 1 1
3 1 2
3 1 3
3 2 1
3 2 2
3 2 3
3 3 1
3 3 2
3 3 3

[2] ์ •๋‹ต ๋ฐ ํ•ด์„ค

 

 

# ์ •๋‹ต ์ฝ”๋“œ

 

#include <stdio.h>

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

    int sequence[7];

    for (int i = 0; i < M; i++) {
        sequence[i] = 1;
    }

    while (1) {
        for (int i = 0; i < M; i++) {
            printf("%d ", sequence[i]);
        }
        printf("\n");

        int index = M - 1;
        while (index >= 0 && sequence[index] == N) {
            index--;
        }

        if (index < 0) {
            break;
        }

        sequence[index]++;
        for (int i = index + 1; i < M; i++) {
            sequence[i] = 1;
        }
    }

    return 0;
}

 

 

 

 

# ํ•ด์„ค

 

โญโญโญโญโญ

1) while (1) {: ๋ฌดํ•œ ๋ฃจํ”„ ์‹œ์ž‘.

2) for (int i = 0; i < M; i++) { printf("%d ", sequence[i]); }: ํ˜„์žฌ ์ˆ˜์—ด์„ ์ถœ๋ ฅํ•œ๋‹ค.

3) printf("\n");: ํ˜„์žฌ ์ˆ˜์—ด ์ถœ๋ ฅ ํ›„ ๊ฐœํ–‰ํ•˜์—ฌ ๋‹ค์Œ ์ˆ˜์—ด์„ ์ถœ๋ ฅ ์ค€๋น„ํ•œ๋‹ค.

4) int index = M - 1; while (index >= 0 && sequence[index] == N) { index--; }: ๋‹ค์Œ ์ˆ˜์—ด์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ํ˜„์žฌ ์ˆ˜์—ด์˜ ๊ฐ€์žฅ ๋ ์ž๋ฆฌ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ N๋ณด๋‹ค ์ž‘์€ ๊ฐ’์ด ๋‚˜์˜ค๋Š” ์œ„์น˜๋ฅผ ์ฐพ๋Š”๋‹ค.

5) if (index < 0) { break; }: ๋งŒ์•ฝ ๋ชจ๋“  ์ž๋ฆฌ๊ฐ€ N์œผ๋กœ ์ฑ„์›Œ์ ธ ์žˆ์œผ๋ฉด ๋ฃจํ”„๋ฅผ ์ข…๋ฃŒํ•œ๋‹ค.

6) sequence[index]++;: ๋‹ค์Œ ์ž๋ฆฌ์˜ ์ˆ˜๋ฅผ ์ฆ๊ฐ€์‹œํ‚จ๋‹ค.

7) for (int i = index + 1; i < M; i++) { sequence[i] = 1; }: ๋‹ค์Œ ์ž๋ฆฌ๋ถ€ํ„ฐ ๋๊นŒ์ง€์˜ ์ˆ˜๋ฅผ 1๋กœ ์ดˆ๊ธฐํ™”ํ•œ๋‹ค.

 

 


[3] ๋А๋‚€ ์ 

 

์ค‘๋ณต์„ ํ—ˆ์šฉํ•˜๊ณ  ์‚ฌ์ „ ์ˆœ์œผ๋กœ ์ •๋ ฌ๋œ ์ˆœ์„œ๋กœ ์ถœ๋ ฅํ•ด์•ผ ํ•˜๋Š” ๋ถ€๋ถ„์ด ๋ณต์žกํ•˜๊ฒŒ ๋А๊ปด์กŒ๋‹ค. ๐Ÿฅฒ