Tags
- ๊ทธ๋ํ ์ด๋ก
- SpringBoot
- BOJ
- ๋๋น ์ฐ์ ํ์
- ์๋ฎฌ๋ ์ด์
- LV2
- Python
- BFS
- ๊น์ด ์ฐ์ ํ์
- ์ ๋ ฌ
- sort
- ๊ตฌํ
- ๋ฐฑํธ๋ํน
- ์ํ
- ์ ์๋ก
- DP
- ๊ต์ฌ
- ๋ฌธ์์ด
- dfs
- queue
- stack
- Dynamic Programming
- greedy
- ๊ทธ๋ํ ํ์
- PGM
- ์๋ฃ๊ตฌ์กฐ
- Study
- Java
- Brute Force Algorithm
- CodingTest
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_15663 : N๊ณผ M (9) ๋ณธ๋ฌธ
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- N๊ฐ์ ์์ฐ์ ์ค M๊ฐ๋ฅผ ๊ณ ๋ฅธ ์์ด์ ๋ชจ๋ ๊ตฌํ๋ค.
- ์์ด์ ์ค๋ณต๋์ ์๋๋ฉฐ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํ๋ค.
- N๊ฐ์ ์์ฐ์๋ ์ค๋ณต์ด ์์ ์ ์๋ค.
- ์์ด๋ก M๊ฐ์ ์์๋ฅผ ๊ณ ๋ฅด๊ณ , ์ค๋ณต์ ์ ๊ฑฐํ๋ฉด ๋๋ค.
๐ธ ์ฝ๋ ๐ธ
import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.StringTokenizer;
public class Main {
private static int N, M, selected[];
private static boolean[] checked;
private static ArrayList<Integer> nums;
private static ArrayList<String> ans;
public static void main(String[] args) throws IOException {
// Input
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine());
N = Integer.parseInt(st.nextToken());
M = Integer.parseInt(st.nextToken());
st = new StringTokenizer(br.readLine());
nums = new ArrayList<>();
selected = new int[M];
checked = new boolean[N];
ans = new ArrayList<>();
for (int i = 0; i < N; i++) {
nums.add(Integer.parseInt(st.nextToken()));
}
Collections.sort(nums);
// Permutation
perm(0);
// Output
for (String s : ans) {
sb.append(s).append('\n');
}
sb.deleteCharAt(sb.length() - 1);
bw.write(sb.toString());
bw.flush();
}
private static void perm(int cnt) {
if (cnt == M) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < M; i++) {
sb.append(selected[i]).append(' ');
}
sb.deleteCharAt(sb.length() - 1);
if (!ans.contains(sb.toString()))
ans.add(sb.toString());
return;
}
for (int i = 0; i < N; i++) {
if (!checked[i]) {
checked[i] = true;
selected[cnt] = nums.get(i);
perm(cnt + 1);
checked[i] = false;
}
}
}
}
๐ธ ์ฝ๋ ํด์ ๐ธ
- ์ ํ์ ์ธ ์์ด ์ฝ๋์์ ์ค๋ณต์ ๊ฑฐ๋ฅผ ์ํด ArrayList๋ฅผ ์ฌ์ฉํ๋ค.
- ์์ด์ด ArrayList ans์ ์๋ค๋ฉด ์ถ๊ฐํ๊ณ , ์๋ค๋ฉด ์ถ๊ฐํ์ง ์๋ ๋ฐฉ์์ด๋ค.
- ans์ ์์๋ฅผ ์ค์ ๋ฐ๊ฟ๊ฐ๋ฉฐ ์ถ๋ ฅํ๋ค.
๐ธ end ๐ธ
- ์ด ๋ฌธ์ ๋ฅผ ์์ด์ด ์๋ ์กฐํฉ์ผ๋ก ํ๋ค๊ฐ ์์ 2๋ฒ์์ ์๋ชป๋๋ค๋ ๊ฑธ ์์์ฑ๋ค.
- ๋ฌธ์ ์์ ์ธ๊ธํ ์ฌ์ ์ ์ ๋ ฌ์ ์ํด ans๋ฅผ ArrayList๊ฐ ์๋ TreeSet์ผ๋ก ๋ง๋ค์๋ค๊ฐ ํ๋ ธ๋ค.
- ์์ด์ ๋ฌธ์์ด๋ก ์ฌ์ ์ ์ ๋ ฌํ๋ฉด, ์์์ ์๋ฆฟ์๊ฐ 10์ ์๋ฆฌ ์ด์์ด๋ฉด ์ค๋ฅ๊ฐ ์๊ธด๋ค.
- ์๋ฅผ ๋ค์ด 3 2 / 10 10 9 ๋ผ๋ฉด, 9 10 / 10 9 / 10 10 ์ด์ด์ผ ํ๋๋ฐ,
๋ฌธ์์ด๋ก ์ ๋ ฌํ๋ฉด 10 10 / 10 9 / 9 10 ์ด ๋์จ๋ค.
728x90
'CodingTest > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
BOJ_1238 : ํํฐ (0) | 2023.06.27 |
---|---|
BOJ_1167 : ํธ๋ฆฌ์ ์ง๋ฆ (0) | 2023.06.25 |
BOJ_1043 : ๊ฑฐ์ง๋ง (0) | 2023.06.09 |
BOJ_1149 : RGB๊ฑฐ๋ฆฌ (0) | 2023.06.08 |
Lv.1 : ๊ณต์ ์ฐ์ฑ (0) | 2023.04.26 |