๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/2529)
< ๋ถ๋ฑํธ >
๋ฌธ์ ํ์ด
๋ง๋ค ์ ์๋ ๋ชจ๋ ์กฐํฉ์ ๊ตฌํ๋ฉด์ ๋ถ๋ฑํธ์ ๋ง์กฑํ๋ ๊ฐ๋ง ๋ค์ ๊ฐ์ผ๋ก ๋๊ฒจ์ค๋ค.
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 _2529_ { // ๋ถ๋ฑํธ
static int num[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
static char arr[];
static int result[];
static boolean visited[];
static String max, min;
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 k = Integer.parseInt(bf.readLine());
arr = new char[k];
st = new StringTokenizer(bf.readLine());
for (int i = 0; i < k; i++) {
arr[i] = st.nextToken().charAt(0);
}
result = new int[k + 1];
visited = new boolean[10];
max = "-1";
min = "100000000000";
search(0, k);
bw.write(max+"\n"+min);
bw.flush();
}
private static void search(int idx, int k) {
if (idx == k + 1) {
String answer = "";
for (int i = 0; i < k + 1; i++) {
answer += result[i];
}
if (Long.parseLong(max) < Long.parseLong(answer)) {
max = answer;
}
if (Long.parseLong(min) > Long.parseLong(answer)) {
min = answer;
}
return;
}
for (int i = 0; i < 10; i++) {
if (!visited[i]) {
if (idx == 0) {
result[idx] = num[i];
visited[i] = true;
search(idx + 1, k);
visited[i] = false;
} else {
if (arr[idx - 1] == '<') {
if (result[idx - 1] < num[i]) {
result[idx] = num[i];
visited[i] = true;
search(idx + 1, k);
visited[i] = false;
}
} else if (arr[idx - 1] == '>') {
if (result[idx - 1] > num[i]) {
result[idx] = num[i];
visited[i] = true;
search(idx + 1, k);
visited[i] = false;
}
}
}
}
}
}
}
๋ณ์)
num : 0~9๊น์ง ์ ์ฅํ ๋ฐฐ์ด
arr : ๋ถ๋ฑํธ ์ ๋ณด
result : ์กฐํฉ
visited : ๋ฐฉ๋ฌธ ์ฌ๋ถ
max, min : ์ต๋, ์ต์ ์ ์
k : ๋ถ๋ฑํธ ๋ฌธ์์ ๊ฐ์
max์ min ๊ฐ์ ์กฐํฉ์ผ๋ก ๋ง๋ค ์ ์๋ -1๊ณผ 100000000000 ๊ฐ์ผ๋ก ์ด๊ธฐํ์์ผ ์ค๋ค. ๋ชจ๋ ๋ณ์๋ฅผ ์ด๊ธฐํ์ํจ ํ search ํจ์๋ฅผ ํธ์ถํ๋ค.
0๋ถํฐ 9๊น์ง์ ์ซ์๋ฅผ ์ ์ฒด ํ์ํ๋ฉฐ ์์ง ์ฌ์ฉํ์ง ์์ ๊ฐ์ธ์ง ํ์ธํ๋ค. ์์ง ์ฌ์ฉํ์ง ์์์ผ๋ฉฐ ์ฒซ ๋ฒ์งธ ๊ฐ์ด๋ผ๋ฉด ์ด๋ค ์ซ์๋์ง ๋ฃ์ ์ ์์ผ๋ฏ๋ก ๊ฐ์ ๋ฃ๊ณ ๋ค์ ๊ฐ์ ๊ตฌํ๊ธฐ ์ํด search ํจ์๋ฅผ ํธ์ถํ๋ค. ์ฒซ ๋ฒ์งธ ๊ฐ์ด ์๋๋ผ๋ฉด ๋ถ๋ฑํธ๋ฅผ ๋ณด๊ณ ๋ถ๋ฑํธ ์กฐ๊ฑด์ ์ผ์นํ ๊ฒฝ์ฐ ๋ค์ search ํจ์๋ฅผ ํธ์ถํ๋ค.
์กฐํฉ์ ์ฌ์ฉํ์ฌ k+1๊ฐ์ ์ซ์๋ฅผ ๋ค ๊ตฌํ๋ค๋ฉด max์ min ๊ฐ๊ณผ ๋น๊ตํ์ฌ ๊ฐ์ ๊ต์ฒดํ๋ค.
์ต์ข max์ min ๊ฐ์ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 4883_์ผ๊ฐ ๊ทธ๋ํ (2) | 2023.12.05 |
---|---|
[Baekjoon] 12026_BOJ ๊ฑฐ๋ฆฌ (1) | 2023.12.04 |
[Baekjoon] 1890_์ ํ (1) | 2023.11.30 |
[Baekjoon] 1495_๊ธฐํ๋ฆฌ์คํธ (0) | 2023.11.29 |
[Baekjoon] 16194_์นด๋ ๊ตฌ๋งคํ๊ธฐ 2 (1) | 2023.11.28 |