Tags
- dfs
- LV2
- stack
- Python
- ์ํ
- sort
- BOJ
- Dynamic Programming
- ์๋ฃ๊ตฌ์กฐ
- ๋ฌธ์์ด
- CodingTest
- SpringBoot
- ๋๋น ์ฐ์ ํ์
- queue
- ๊ทธ๋ํ ์ด๋ก
- Brute Force Algorithm
- ์ ๋ ฌ
- ๊น์ด ์ฐ์ ํ์
- ์๋ฎฌ๋ ์ด์
- greedy
- ๊ต์ฌ
- Study
- BFS
- Java
- DP
- ๊ตฌํ
- ๋ฐฑํธ๋ํน
- ์ ์๋ก
- ๊ทธ๋ํ ํ์
- PGM
Archives
๊ธฐ๋ก๋ฐฉ
BOJ_15663 : N๊ณผ M (9) ๋ณธ๋ฌธ
15663๋ฒ: N๊ณผ M (9)
ํ ์ค์ ํ๋์ฉ ๋ฌธ์ ์ ์กฐ๊ฑด์ ๋ง์กฑํ๋ ์์ด์ ์ถ๋ ฅํ๋ค. ์ค๋ณต๋๋ ์์ด์ ์ฌ๋ฌ ๋ฒ ์ถ๋ ฅํ๋ฉด ์๋๋ฉฐ, ๊ฐ ์์ด์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด์ ์ถ๋ ฅํด์ผ ํ๋ค. ์์ด์ ์ฌ์ ์์ผ๋ก ์ฆ๊ฐํ๋ ์์๋ก ์ถ๋ ฅํด
www.acmicpc.net
๐ธ ๋ฌธ์ ๋ถ์ ๐ธ
- 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 |