File tree Expand file tree Collapse file tree
백준/Silver/15654. N과 M (5) Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ let input = require ( 'fs' ) . readFileSync ( './dev/stdin' ) . toString ( ) . trim ( ) . split ( '\n' ) ;
2+ let [ N , M ] = input [ 0 ] . split ( ' ' ) . map ( Number ) ;
3+ let arr = input [ 1 ] . split ( ' ' ) . map ( Number ) ;
4+ let issued = Array ( N ) . fill ( 0 ) ;
5+
6+ let stack = [ ] ;
7+ let answer = [ ] ;
8+
9+ arr . sort ( ( a , b ) => a - b ) ;
10+
11+ function sol ( k ) {
12+ if ( stack . length === M ) {
13+ answer . push ( stack . join ( ' ' ) ) ;
14+ return ;
15+ }
16+
17+ // 하나씩 방문하면서 전체 돌기
18+ for ( let i = 0 ; i < N ; i ++ ) {
19+ if ( ! issued [ i ] ) {
20+ issued [ i ] = true ;
21+ stack . push ( arr [ i ] ) ;
22+ sol ( k + 1 ) ;
23+ issued [ i ] = false ;
24+ stack . pop ( ) ;
25+ }
26+ }
27+ }
28+
29+ sol ( 0 ) ;
30+
31+ console . log ( answer . join ( '\n' ) ) ;
32+
33+ // 시간
Original file line number Diff line number Diff line change 1+ # [ Silver III] N과 M (5) - 15654
2+
3+ [ 문제 링크] ( https://www.acmicpc.net/problem/15654 )
4+
5+ ### 성능 요약
6+
7+ 메모리: 22884 KB, 시간: 192 ms
8+
9+ ### 분류
10+
11+ 백트래킹
12+
13+ ### 제출 일자
14+
15+ 2026년 2월 28일 17:05:01
16+
17+ ### 문제 설명
18+
19+ <p >N개의 자연수와 자연수 M이 주어졌을 때, 아래 조건을 만족하는 길이가 M인 수열을 모두 구하는 프로그램을 작성하시오. N개의 자연수는 모두 다른 수이다.</p >
20+
21+ <ul >
22+ <li>N개의 자연수 중에서 M개를 고른 수열</li>
23+ </ul >
24+
25+ ### 입력
26+
27+ <p >첫째 줄에 N과 M이 주어진다. (1 ≤ M ≤ N ≤ 8)</p >
28+
29+ <p >둘째 줄에 N개의 수가 주어진다. 입력으로 주어지는 수는 10,000보다 작거나 같은 자연수이다.</p >
30+
31+ ### 출력
32+
33+ <p >한 줄에 하나씩 문제의 조건을 만족하는 수열을 출력한다. 중복되는 수열을 여러 번 출력하면 안되며, 각 수열은 공백으로 구분해서 출력해야 한다.</p >
34+
35+ <p >수열은 사전 순으로 증가하는 순서로 출력해야 한다.</p >
36+
You can’t perform that action at this time.
0 commit comments