์คํ์๊ฐ ๋จ์ถ ๋ฐฉ๋ฒ
๋ณดํต์ ์ง๋ฌธ : ์์ฐ์ N๊ณผ M์ด ์ฃผ์ด์ก์ ๋ 1๋ถํฐ N๊น์ง ์์ฐ์ ์ค์์ ์ค๋ณต ์์ด M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์์ด์ ๊ตฌํ๋ผ.
1. StringBuilder ๋ก ๊ฒฐ๊ณผ ์ถ๋ ฅํ๊ธฐ
2. ๋ฐฑํธ๋ํน ํ๋ฉด์ ์์ด ๊ฒฐ๊ณผ๊ฐ์ ์ ์ฅํ๋ ๋ณ์๋ฅผ Array๋ก ์ฌ์ฉํ๊ธฐ
2-1. ์ ๊ทธ๋ด๊น? Array๋ฅผ ์ฌ์ฉํ๋ฉด Array์ cnt ์ธ๋ฑ์ค์ ๊ฐ์ ๊ณ์ ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ ArrayList ๋ฅผ ์ฌ์ฉํ ๋ ํ์ํ list.remove(list.size()-1);
์ ๊ณผ์ ์ด ํ์์๋ค.
3. (ํน์ ๋ฌธ์ ์ํฉ) input์ ๋ํด ์ค๋ณต์ ์ ๊ฑฐํ๋ ๊ณผ์ ์ ๊ฑฐ์ณค๋ค๋ฉด, ๋ง๋ค์ด์ง comb์ ๋ํด ์ค๋ณต์ ๊ฒ์ฌํ๋ ๊ณผ์ ์ ํ์์๋ค.
3-1. ์ด๋ฏธ input์์ ์ค๋ณต ์์๋ฅผ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์ ๋ง๋ค์ด์ง๋ ์์ด์๋ ์ค๋ณต๋ ์์ด์ด ์กด์ฌํ ์ ์๋ค.
package com.mincheolsong;
import java.util.*;
import java.io.*;
public class Main {
static int N,M;
static List<Integer> list;
static Set<Integer> set;
static StringBuilder sb = new StringBuilder(); // StringBuilder ์ฌ์ฉ
static int[] comb; // Array ์ฌ์ฉ
static void solve(int cnt){
if(cnt == M){
// ์ค๋ณต๋ก์ง ํ์ ์์ (์ด๋ฏธ mainํจ์์์ input์ ์ค๋ณต์ ์ ๊ฑฐํ๊ธฐ ๋๋ฌธ์)
for(int i=0;i<M;i++){
sb.append(comb[i]).append(" ");
}
sb.append("\n");
return;
}
for(int i=0;i<N;i++){
comb[cnt] = list.get(i);
solve(cnt+1);
// Array์ cnt์์น์ ๊ฐ์ ๊ณ์ ๊ฐฑ์ ํ๊ธฐ ๋๋ฌธ์ backTracking ํจ์์ ํน์ง์ธ ์๋ณต ์ฝ๋๊ฐ ํ์ ์์
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
list = new ArrayList<>();
comb = new int[M];
set = new HashSet<>();
st = new StringTokenizer(br.readLine());
for(int i=0;i<N;i++){
set.add(Integer.parseInt(st.nextToken()));
}
for(Integer i : set){
list.add(i);
}
Collections.sort(list);
N = list.size();
solve(0);
System.out.print(sb.toString());
}
}
์กฐํฉ ์ฝ๋๋ ๋น๋ด๋ฆผ์ฐจ์ ์์ด ์ฝ๋์ ๊ฐ๋ค
์กฐํฉ์ ๊ตฌํํ๋ ์ฝ๋๋ ๋น๋ด๋ฆผ์ฐจ์ ์์ด ์ฝ๋์ ๊ฐ๋ค
(์๋ ์ฝ๋๋ 1,2,3,4 ์์ 3๊ฐ๋ฅผ ๋ฝ๋ ๊ฒฝ์ฐ์ ์กฐํฉ)
import java.util.*;
public class Main {
static int[] comb;
static int[] n = {1,2,3,4};
static void solve(int start,int cnt){
if(cnt==3){
System.out.println(Arrays.toString(comb));
return;
}
for(int i=start;i<4;i++){
comb[cnt] = n[i];
solve(i+1,cnt+1);
}
}
public static void main(String[] args) {
comb = new int[3];
solve(0,0);
}
}
'๐์ฝ๋ฉํ ์คํธ:CodingTest' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฉ๋์ฌ์ ์ ์ฌ๋ค (0) | 2024.12.04 |
---|---|
2024 ์ผ์ฑSW์ญ๋ํ ์คํธ ํ๋ฐ๊ธฐ ์ค์ 1๋ฒ (0) | 2024.12.02 |
[HSAT 4ํ ์ ๊ธฐ ์ฝ๋ฉ ์ธ์ฆํ๊ฐ ๊ธฐ์ถ] ํต๊ทผ๋ฒ์ค ์ถ๋ฐ ์์ ๊ฒ์ฆํ๊ธฐ (0) | 2024.06.28 |
[HSAT 1ํ ์ ๊ธฐ ์ฝ๋ฉ ์ธ์ฆํ๊ฐ ๊ธฐ์ถ] ๋ก๋ด์ด ์ง๋๊ฐ ๊ฒฝ๋ก (0) | 2024.06.28 |
[ํ๋ก๊ทธ๋๋จธ์ค] ์๋ด์ ์ธ์ (0) | 2024.06.26 |