๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/20529)
< ๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ >
๋ฌธ์ ํ์ด
์กฐํฉ์ ์ฌ์ฉํ์ฌ 3๋ช ์ ํ์์ MBTI ์ฑ๊ฒฉ ์ ํ์ ๋ฝ์ ๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
์กฐํฉ์ผ๋ก๋ง ๋ฌธ์ ๋ฅผ ๊ตฌํํ ๊ฒฝ์ฐ ์๊ฐ์ด๊ณผ๊ฐ ๋ฐ์ํ๋ค. ์๊ฐ์ ์ค์ผ ๋ฐฉ๋ฒ์ ๋ชฐ๋ผ ์ฐพ์๋ณด๋ ๋น๋๊ธฐ์ง ์๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ด์๋ค. ๋น๋๊ธฐ์ง ์๋ฆฌ๋ฅผ ์ฌ์ฉํ๋ฉด MBTI๊ฐ ์ด 16๊ฐ ์ด๋ฏ๋ก ๋ง์ฝ ์ฌ๋ ์๊ฐ 32๋ช ์ด๋ผ๋ฉด ๋๊ฐ์ MBTI๊ฐ 2๋ช ์ฉ ์์ ์ ์์ผ๋ฉฐ ์ฌ๋ ์๊ฐ 32๋ช ๋ณด๋ค ๋ง๋ค๋ฉด ๋๊ฐ์ MBTI๊ฐ ๋ฌด์กฐ๊ฑด 3๋ช ์ด ์๊ฒ ๋๋ค. ๊ทธ๋ผ ๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ๊ฐ 0์ด ๋๋ฏ๋ก ์ฌ๋ ์๊ฐ 32๋ณด๋ค ํฌ๋ค๋ฉด ์กฐํฉ์ ๊ตฌํ ํ์๊ฐ ์๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;
public class _20529_ { // ๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ
static String arr[], result[];
static int answer;
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
int t = Integer.parseInt(bf.readLine());
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(bf.readLine());
arr = new String[n];
result = new String[n];
answer = Integer.MAX_VALUE;
st = new StringTokenizer(bf.readLine());
for (int j = 0; j < n; j++) {
arr[j] = st.nextToken();
}
if (n > 32) {
answer = 0;
} else {
search(0, 0);
}
bw.write(answer + "\n");
}
bw.flush();
}
private static void search(int idx, int start) {
if (idx == 3) {
int temp = 0;
for (int i = 0; i < 4; i++) {
if (result[0].charAt(i) != result[1].charAt(i)) {
temp += 1;
}
if (result[1].charAt(i) != result[2].charAt(i)) {
temp += 1;
}
if (result[0].charAt(i) != result[2].charAt(i)) {
temp += 1;
}
}
answer = Math.min(temp, answer);
return;
}
for (int i = start; i < arr.length; i++) {
result[idx] = arr[i];
search(idx + 1, i + 1);
}
}
}
๋ณ์)
t : ํ ์คํธ ์ผ์ด์ค ์
n : ํ์์ ์
arr : ํ์์ MBTI
result : ์กฐํฉ์ผ๋ก ๊ตฌํ 3๋ช ์ MBTI
answer : ๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ
ํ ์คํธ ์ผ์ด์ค ์, ํ์์ ์, ํ์์ MBTI๋ฅผ ์ ๋ ฅ๋ฐ์ ์ ์ฅํ๋ค. ํ์์ ์๊ฐ 32๋ณด๋ค ํฌ๋ค๋ฉด ๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ๊ฐ 0์ด๋ค. 32๋ณด๋ค ํฌ์ง ์๋ค๋ฉด ์กฐํฉ์ ๊ตฌํ๊ธฐ ์ํด search ํจ์๋ฅผ ํธ์ถํ๋ค.
search ํจ์๋ฅผ ํตํด ์กฐํฉ์ผ๋ก 3๋ช ์ ๋ฝ๋๋ค. ๋ง์ฝ ์กฐํฉ์ผ๋ก 3๋ช ์ ๋ค ๊ตฌํ๋ค๋ฉด A์ B ์ฌ์ด์ ์ฌ๋ฆฌ์ ์ธ ๊ฑฐ๋ฆฌ, B์ C ์ฌ์ด์ ์ฌ๋ฆฌ์ ์ธ ๊ฑฐ๋ฆฌ, A์ C ์ฌ์ด์ ์ฌ๋ฆฌ์ ์ธ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ ํ ๊ฐ์ฅ ๊ฐ๊น์ด ์ธ ์ฌ๋์ ์ฌ๋ฆฌ์ ๊ฑฐ๋ฆฌ๋ฅผ ๊ตฌํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 13398_์ฐ์ํฉ 2 (1) | 2023.12.15 |
---|---|
[Baekjoon] 5582_๊ณตํต ๋ถ๋ถ ๋ฌธ์์ด (0) | 2023.12.14 |
[Baekjoon] 16198_์๋์ง ๋ชจ์ผ๊ธฐ (0) | 2023.12.12 |
[Baekjoon] 1189_์ปด๋ฐฑํ (1) | 2023.12.11 |
[Baekjoon] 21937_์์ (1) | 2023.12.08 |