-
백준 15665번 : N과 M (11) (C 언어)c c++ 언어 공부 2023. 9. 18. 11:59
https://www.acmicpc.net/problem/15665
15665번: N과 M (11)
한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다. 수열은 사전 순으로 증가하는 순서로 출력해
www.acmicpc.net
Code:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647#include <stdio.h>#include <stdlib.h>int n, m;int arr[8] = { 0. };int result[8] = { 0, };int compare(const void* a, const void* b){if (*(int*)a > *(int*)b) return 1;else if (*(int*)a < *(int*)b) return -1;else return 0;}void sequence(int count){if (count == m){for (int i = 0; i < m; i++){printf("%d ", result[i]);}printf("\n");return;}int temp = -1;for (int i = 0; i < n; i++){if (temp != arr[i]){temp = arr[i];result[count] = arr[i];sequence(count + 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);sequence(0);}cs 문제 설명:
주어진 문제는 N개의 자연수 중에서 M개를 골라서 수열을 만들되, 이를 사전 순으로 증가하는 순서로 출력하는 프로그램을 작성하는 것입니다. 입력으로는 N, M 그리고 N개의 자연수가 주어지며, 출력으로는 문제의 조건을 만족하는 수열을 공백으로 구분하여 출력해야 합니다.
코드 설명:
- n, m 및 수열을 입력받기 위한 배열 arr을 선언합니다.
- 수열을 사전 순으로 출력하기 위해 비교 함수 compare를 정의합니다.
- 수열을 생성하는 함수 sequence를 정의합니다. 이 함수는 재귀적으로 수열을 생성하고 출력합니다.
- main 함수에서 입력을 받고, 수열을 사전 순으로 정렬한 후 sequence 함수를 호출하여 문제의 조건을 만족하는 수열을 생성하고 출력합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 16956번 : 늑대와 양 (C 언어) (1) 2023.09.19 백준 5575번 : 타임 카드 (C 언어) (0) 2023.09.19 백준 10768번 : 특별한 날 (C 언어) (0) 2023.09.18 백준 2490번 : 윷놀이 (C 언어) (0) 2023.09.17 백준 15656번 : N과 M (7) (C 언어) (0) 2023.09.17