티스토리 뷰

백준 온라인 저지(BOJ) 15652번 N과 M (4)
https://www.acmicpc.net/problem/15652
15652번: N과 M (4)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
* 사용언어 : C언어, C++
1. 문제
N개의 수에서 M개의 숫자를 뽑아 나열하는 모든 경우를 출력
(숫자 중복 허용, 비내림차순 수열만)

2. 풀이
아래 (3)번 풀이로 작성한 코드에서 약간만 수정하여 풀었습니다.
for문을 통해 재귀함수를 타는 부분(수열의 다음 자리 숫자를 지정하는 부분)에서
시작 숫자를 1부터가 아닌 직전 자리의 숫자(prev)부터 반복하도록 했습니다.
(int i = 0에서 int i = prev로 수정)
수열의 첫 번째 자리(idx == 0)에는 직전 숫자가 있을 수 없으니 idx != 0일 때 직전 숫자를 찾게 했습니다.
https://rightbellboy.tistory.com/309
[백준/BOJ] 15651번 N과 M (3) (C/C++)
백준 온라인 저지(BOJ) 15651번 N과 M (3) https://www.acmicpc.net/problem/15651 15651번: N과 M (3) 한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열
rightbellboy.tistory.com
3. 코드
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
15652_N과 M (4)
1112KB 4ms
*/
#include <cstdio>
const int LM = 8;
int arr[LM], N, M;
void permutation(int idx) {
if (idx == M) {
for (int i = 0; i < M; ++i) printf("%d ", arr[i]);
printf("\n");
return;
}
int prev = 1;
if (idx != 0) prev = arr[idx - 1];
for (int i = prev; i <= N; ++i) {
arr[idx] = i;
permutation(idx + 1);
}
}
int main() {
#ifdef _WIN32
freopen("input.txt", "r", stdin);
#endif // _WIN32
scanf("%d %d", &N, &M);
permutation(0);
return 0;
}
'개발자 > 문제풀이 (C언어)' 카테고리의 다른 글
| [백준/BOJ] 2580번 스도쿠 (C/C++) (0) | 2024.02.19 |
|---|---|
| [백준/BOJ] 9663번 N-Queen (C/C++) (0) | 2024.02.08 |
| [백준/BOJ] 15651번 N과 M (3) (C/C++) (0) | 2024.01.22 |
| [백준/BOJ] 15650번 N과 M (2) (C/C++) (0) | 2024.01.21 |
| [백준/BOJ] 15649번 N과 M (1) (C/C++) (0) | 2024.01.19 |
- Total
- Today
- Yesterday
- 나의첫죽음학수업
- 자료구조
- 정세현의통찰
- 인간본성불패의법칙
- JUNGOL
- 유연함의힘
- 동탄에듀센터
- 아가별
- 쿠프마케팅
- 센터독서클럽
- 삼성전자
- 알고리즘
- 영화감상평
- 정올
- 여가포인트
- 독서 감상평
- 시스템개발자
- 관계가상처가되기전에
- 문현공
- 당신도느리게나이들수있습니다
- 시대예보
- 이용제한
- 동탄에듀센터2
- 세상을 읽는 새로운 언어 빅데이터
- 독서감상평
- 자동차보험
- 이상감지
- 똑똑하고게으르게
- 마침내 특이점이 시작된다
- 최재천의공부
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | ||||
| 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| 11 | 12 | 13 | 14 | 15 | 16 | 17 |
| 18 | 19 | 20 | 21 | 22 | 23 | 24 |
| 25 | 26 | 27 | 28 | 29 | 30 | 31 |