티스토리 뷰
728x90
반응형
백준 온라인 저지(BOJ) 15650번 N과 M (2)
https://www.acmicpc.net/problem/15650
* 사용언어 : C언어, C++
1. 문제
N개의 수에서 M개의 숫자를 중복없이 뽑아 오름차순으로 출력 (nCm 조합)
2. 풀이
앞선 N과 M (1)와 유사한 방식, 즉 숫자 출력용 배열과 DFS 구조를 활용하여 풀었습니다.
https://rightbellboy.tistory.com/307
단, 앞선 순열 문제와는 다르게 오름차순인 수열만 출력해야 하므로
바로 앞 숫자(arr[idx - 1])보다 1 큰 수부터 combination 재귀 호출을 했습니다.
이렇게 수정하고 나니 visited 배열도 필요 없어져서 없앴고,
idx == 0 조건을 if문 없이 동일하게 처리하고 싶어서 idx를 1부터 8까지 활용했습니다.
자세한 내용은 아래 코드 참고하시길 바랍니다.
3. 코드
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
/*
15650_N과 M (2)
1112KB 0ms
*/
#include <cstdio>
const int LM = 8;
int arr[LM + 1], N, M;
void combination(int idx) {
if (idx == M + 1) {
for (int i = 1; i <= M; ++i) printf("%d ", arr[i]);
printf("\n");
return;
}
for (int i = arr[idx - 1] + 1; i <= N; ++i) {
arr[idx] = i;
combination(idx + 1);
}
}
int main() {
#ifdef _WIN32
freopen("input.txt", "r", stdin);
#endif // _WIN32
scanf("%d %d", &N, &M);
combination(1);
return 0;
}
728x90
반응형
'개발자 > 문제풀이 (C언어)' 카테고리의 다른 글
[백준/BOJ] 15652번 N과 M (4) (C/C++) (0) | 2024.01.25 |
---|---|
[백준/BOJ] 15651번 N과 M (3) (C/C++) (0) | 2024.01.22 |
[백준/BOJ] 15649번 N과 M (1) (C/C++) (0) | 2024.01.19 |
[백준/BOJ] 2447번 별 찍기 - 10 (C/C++) (0) | 2024.01.18 |
[백준/BOJ] 4779번 칸토어 집합 (C/C++) (0) | 2024.01.10 |
댓글
반응형
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 독서감상평
- 당신도느리게나이들수있습니다
- JUNGOL
- 센터독서클럽
- 시대예보
- 정올
- 쿠프마케팅
- AdSendse
- 세상을 읽는 새로운 언어 빅데이터
- 동탄에듀센터
- 여가포인트
- 알고리즘
- 독서 감상평
- 자동차보험
- 유연함의힘
- 영화감상평
- 정세현의통찰
- 긴 자리 덧셈 뺄셈
- 긴 자리 곱셈
- 동탄에듀센터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 |
글 보관함