728x90
풀이
"백준 15663, N과 M (9)"에서 기존에 i번째 요소를 사용했는지를 확인하기 위해 사용한 check를 빼면 해결할 수 있다.
소스코드
#include <stdio.h>
#include <stdlib.h>
int N, M, arr[7], visited[7];
int compare(const void *a, const void *b){
return *(int*)a - *(int*)b;
}
void BT(int depth){
for (int i = 0, temp = 0; i < N; i++)
if (temp != arr[i]){
temp = visited[depth] = arr[i];
if (depth + 1 == M){
for (int idx = 0; idx < M; idx++)
printf("%d ", visited[idx]);
putchar(10);
}else BT(depth + 1);
}
}
int main(){
scanf("%d %d", &N, &M);
for (int i = 0; i < N; i++)
scanf("%d", &arr[i]);
qsort(arr, N, sizeof(int), compare);
BT(0);
}
출처 및 참고자료
15665번: N과 M (11)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
[백준 15663] N과 M (9) [C]
풀이 기존에 풀이하던 방식은 단순히 중복을 허용하거나 하지 않는 방식이라 이번 문제를 풀이하기에는 적합하지 않다. 때문에, 기존에 i번째 요소를 사용했는지, 기존에 사용한 숫자와 현재 사
kyr-db.tistory.com
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 16214] N과 M [C] (0) | 2021.08.18 |
---|---|
[백준 15666] N과 M (12) [C] (0) | 2021.08.18 |
[백준 15656] N과 M (7) [C] (0) | 2021.08.18 |
[백준 15655] N과 M (6) [C] (0) | 2021.08.18 |
[백준 15651] N과 M (3) [C] (0) | 2021.08.18 |