15657번: N과 M (8) (acmicpc.net)
소스코드
문제풀이
- 자연수의 수 n과 n개의 자연수 중 고르게 될 자연수의 수 m을 입력 받음
- n개의 자연수를 리스트로 입력 받음
- 고른 수열은 비내림차순이어야 하므로 리스트를 오름차순으로 정렬
- 자연수를 하나씩 append 또는 pop 할 것이므로 정답이 될 수열을 가지고 있을 빈 배열 생성
- 조건을 만족하는 수열을 생성해줄 fun() 함수
- 입력 받은 자연수 리스트 내에서 반복
- 정답인 수열을 가지고 있을 arr가 비어있거나 arr의 마지막 자연수가 narr 리스트 내 자연수인 i보다 작을 때 그리고 같은 수를 여러 번 골라도 되므로 같을 때도 i를 arr에 추가
- fun() 함수 재호출
- arr의 크기가 입력 받은 m과 같다면 공백으로 구분해서 수열 출력
- arr의 크기가 입력 받은 m과 같지 않다면 조건을 만족하는 narr 내의 자연수 i를 arr에 추가 후 fun() 재호출
- 공백으로 구분해 수열을 출력했다면 return을 통해 호출했던 자리인 append 이후 fun() 다음 줄로 이동
- pop을 통해 arr의 맨 뒤 자연수를 삭제
- 이후 narr 내부에 다른 자연수를 통해 반복
- 입력 받은 자연수 리스트 내에서 반복
- fun() 함수
'Koala - 9기 > 기초 알고리즘 스터디' 카테고리의 다른 글
[백준/python] 3029 : 경고 (0) | 2023.02.19 |
---|---|
[백준 / C++] 1182번: 부분 수열의 합 (0) | 2023.02.18 |
[백준/python] 16955번 : 오목, 이길 수 있을까? (0) | 2023.02.15 |
[백준/Python] 1182번: 부분수열의 합 (0) | 2023.02.12 |
[백준/python] #11655 ROT13 (0) | 2023.02.12 |