๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/7490)
< 0 ๋ง๋ค๊ธฐ >
๋ฌธ์ ํ์ด
'+', '-', ' '์ ๋ฃ์ ์ ์๋ ๋ชจ๋ ๊ฒฝ์ฐ์ ์๋ฅผ ํ์ํ๋ค.
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.ArrayList;
public class _7490_ { // 0 ๋ง๋ค๊ธฐ
static ArrayList<String> 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));
int t = Integer.parseInt(bf.readLine());
for (int i = 0; i < t; i++) {
int n = Integer.parseInt(bf.readLine());
String result = "1";
answer = new ArrayList<>();
search(result, n, 2);
for(String str:answer) {
bw.write(str+"\n");
}
bw.write("\n");
}
bw.flush();
}
private static void search(String result, int n, int idx) {
if (idx == n + 1) {
String temp = result.replace(" ", "");
int x = 1;
int a = temp.charAt(0) - '0';
while (x < temp.length() && Character.isDigit(temp.charAt(x))) {
a *= 10;
a += temp.charAt(x++)-'0';
}
while (x < temp.length()) {
int y = x;
y += 1;
int b = temp.charAt(y) - '0';
while (y + 1 < temp.length() && Character.isDigit(temp.charAt(y + 1))) {
b *= 10;
b += temp.charAt(++y) - '0';
}
if (temp.charAt(x) == '+') {
a += b;
} else {
a -= b;
}
x = y + 1;
}
if (a == 0) {
answer.add(result);
}
return;
}
search(result + " " + idx, n, idx + 1);
search(result + "+" + idx, n, idx + 1);
search(result + "-" + idx, n, idx + 1);
}
}
๋ณ์)
t : ํ ์คํธ ์ผ์ด์ค ๊ฐ์
n : ์์ฐ์ N
result : ์์
answer : 0์ด ๋๋ ์์
ํ ์คํธ ์ผ์ด์ค ์ t๋ฅผ ์ ๋ ฅ๋ฐ๋๋ค. ํ ์คํธ ์ผ์ด์ค ์๋งํผ ์์ฐ์ N์ ์ ๋ ฅ๋ฐ์ search ํจ์๋ฅผ ํธ์ถํ๋ค. ์ต์ข answer ๊ฐ์ ์ถ๋ ฅํ๋ค.
search(์์, ์์ฐ์ N, ํ์ฌ ๊ฐ)
ํ์ฌ ๊ฐ์ด n+1์ด๋ผ๋ฉด ์์์ ๊ณ์ฐํ๋ค. ๊ณ์ฐ์ ์ํด ๊ณต๋ฐฑ์ ์ ๊ฑฐํ๋ค. ๋จผ์ ๊ฐ a๋ฅผ ์์์ 0๋ฒ์งธ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ค. ์ซ์๋ฅผ ์ด์ด ๋ถ์ธ ๊ฒ์ ํ์ธํ๊ธฐ ์ํด ๋ค์ ๊ฐ์ด ์ซ์์ธ์ง ํ์ธํ๋ฉฐ ์ซ์๋ผ๋ฉด ์ด์ด ๋ถ์ด๊ณ ์ซ์๊ฐ ์๋๋ผ๋ฉด ๋ค์ ๊ณผ์ ์ ๋ฐ๋ณตํ๋ค.
๊ฐ b๋ฅผ ์์์ y๋ฒ์งธ ๊ฐ์ผ๋ก ์ด๊ธฐํํ๋ค. ์ซ์๋ฅผ ์ด์ด ๋ถ์ธ ๊ฒ์ ํ์ธํ๊ธฐ ์ํด ๋ค์ ๊ฐ์ด ์ซ์์ธ์ง ํ์ธํ๋ฉฐ ์ซ์๋ผ๋ฉด ์ด์ด ๋ถ์ธ๋ค. b๊ฐ์ ๊ตฌํ ๋ค x๋ฒ์งธ ๊ฐ์ด +๋ผ๋ฉด a์ b๋ฅผ ๋ํ๊ณ , -๋ผ๋ฉด a์ b๋ฅผ ๋บ๋ค.
๋ง์ฝ ๊ฒฐ๊ณผ๊ฐ 0์ด๋ผ๋ฉด answer์ ์์์ ์ถ๊ฐํ ํ ์ข ๋ฃํ๋ค.
๊ณต๋ฐฑ์ ์ฝ์ ํ์ฌ search ํจ์๋ฅผ ํธ์ถํ๋ค.
+๋ฅผ ์ฝ์ ํ์ฌ search ํจ์๋ฅผ ํธ์ถํ๋ค.
-๋ฅผ ์ฝ์ ํ์ฌ search ํจ์๋ฅผ ํธ์ถํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 13022_๋๋์ ์ฌ๋ฐ๋ฅธ ๋จ์ด (1) | 2024.05.02 |
---|---|
[Baekjoon] 10157_์๋ฆฌ๋ฐฐ์ (0) | 2024.05.01 |
[Baekjoon] 18290_NM๊ณผ K (1) (0) | 2024.04.29 |
[Baekjoon] 1418_K-์ธ์ค์ (0) | 2024.04.26 |
[Baekjoon] 24039_2021์ ๋ฌด์์ด ํน๋ณํ ๊น? (1) | 2024.04.25 |