티스토리 뷰

백준 온라인 저지(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
- 정세현의통찰
- 정올
- 알고리즘
- 독서감상평
- 쿠프마케팅
- 인간본성불패의법칙
- 영화감상평
- 아가별
- 자동차보험
- 삼성전자
- 마침내 특이점이 시작된다
- 당신도느리게나이들수있습니다
- 최재천의공부
- 시대예보
- 이상감지
- 시스템개발자
- 자료구조
- 동탄에듀센터
- 여가포인트
- 유연함의힘
- 독서 감상평
- 센터독서클럽
- 관계가상처가되기전에
- 똑똑하고게으르게
- 동탄에듀센터2
- 이용제한
- 나의첫죽음학수업
- JUNGOL
- 문현공
- 세상을 읽는 새로운 언어 빅데이터
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 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 |