문제
자연수 N과 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오.
- 1부터 N까지 자연수 중에서 중복 없이 M개를 고른 수열
입력
첫째 줄에 자연수 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)
출력
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.
수열은 사전 순으로 증가하는 순서로 출력해야 한다.
푸는 TIP
소스 코드
#include <stdio.h>
#include <malloc.h>
#pragma warning(disable : 4996) //비주얼 스튜디오 scanf 오류 해제
void reset_matrix(int *);
int main() {
int size=0, max=0, row=1; //배열의 크기 및 최댓값, 행의 개수 선언
int *matrix = NULL;
int i = 0, j = 0;
scanf("%d %d", &max, &size);
matrix = (int*)malloc(size * int); //배열의 크기 만들기
while (i = 0, j = max; i < size; i++, j--) { //배열의 행이 몇개 되는지 확인
row *= j;
}
reset_matrix(matrix);
for (i = 0; i < row; i++) { //행의 개수만큼 반복
for (j = 0; j < size; j++) { //열의 개수만큼 반복
if (j != 0 && matrix[j] == matrix[j-1])
}
}
free(matrix);
return 0;
}
void reset_matrix(int * matrix) {
for (int i = 0; i < (sizeof(matrix) / sizeof(int)); i++) {
matrix[i] = 1;
}
}
실행 결과
느낀 점
오랜만에 코딩을 하니 계속 하다가 막히는 부분이 있어서 힘들었다.
처음에 헛고생으로 2차원 배열로 만들어서 중복을 확인하려했는데 너무 번거로운 작업이라 수정해서 위와 같은 작업으로 진행했다.
문제 링크
'코딩 테스트 연습 > BaekJoon' 카테고리의 다른 글
[백준] 18405번 : 경쟁적 전염 [c++ / 소스코드 포함] (0) | 2022.03.10 |
---|---|
[백준] 2798번 : 블랙잭 (0) | 2020.07.29 |