PS/Baekjoon Online Judge

[백준 15652] N과 M (4) [C]

kimyoungrok 2021. 8. 10. 15:09

백준 - 15652


풀이

"백준 15650, N과 M (2)"를 참고해서 풀이했다.

기존의 코드에 같은 수를 여러번 고를 수 있도록 수정만 하면 된다.

for (j = 0; j < depth; j++)
    if (arr[j] > i) break; // arr[j]에 담긴 수보다 작은 경우에만 저장하지 않는다.

소스코드

#include <stdio.h>
int arr[8], N, M;
void BT(int depth){
    for (int i = 1; i <= N; i++){
        if (!depth) arr[0] = i;
        else{
            int j;
            for (j = 0; j < depth; j++)
                if (arr[j] > i) break;
				
            if (j == depth) arr[depth] = i;
            else continue;
        }	
		
        if (depth + 1 == M){
            for (int idx = 0; idx < M; idx++)
                printf("%d ", arr[idx]);
            putchar(10);
        }else BT(depth + 1);
    }
}
int main(){
    scanf("%d %d", &N, &M);
    BT(0);
}

출처 및 참고자료

 

15652번: N과 M (4)

한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해

www.acmicpc.net

 

[백준 15650] N과 M (2) [C]

풀이 "백준 15649, N과 M (1)"를 참고해서 풀이했다. 이전 문제에서는 아래 코드와 같이 중복되는 수열을 거르기 위한 조건을 사용했다. for (j = 0; j < depth; j++) if (arr[j] == i) break;  때문에, [1, 1],..

kyr-db.tistory.com

'PS > Baekjoon Online Judge' 카테고리의 다른 글

[백준 15657] N과 M (8) [C]  (0) 2021.08.10
[백준 15654] N과 M (5) [C]  (0) 2021.08.10
[백준 1788] 피보나치 수의 확장 [C]  (0) 2021.08.10
[백준 5430] AC [C]  (1) 2021.08.09
[백준 15650] N과 M (2) [C]  (0) 2021.08.09