์ผ | ์ | ํ | ์ | ๋ชฉ | ๊ธ | ํ |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- upperbound
- LowerBound
- ๋ฐฑํธ๋ํน
- Dijkstra
- ์ธ๊ทธ๋จผํธํธ๋ฆฌ
- PriorityQueue
- ๊ตฌํ
- ํ์๊ฐ์
- ํฌํฌ์ธํฐ
- ํ๋ก์ด๋์์
- ์กฐํฉ
- Union Find
- BFS
- ์๋ฎฌ๋ ์ด์
- ์ฌ๊ท
- dfs
- Django
- ํธ๋ผ์ด
- ๋ค์ต์คํธ๋ผ
- dp
- ๊ทธ๋ฆฌ๋
- ์์ด
- ์ฐ์ ์์ํ
- ๋ถ๋ถ์งํฉ
- Floyd
- ์๋ฃ๊ตฌ์กฐ
- ์ด๋ถํ์
- ์นด์นด์ค
- ๋นํธ๋ง์คํน
- ์ด์งํธ๋ฆฌ
- Today
- Total
J
[JAVA] BOJ ๋ฐฑ์ค 14891 ํฑ๋๋ฐํด ๋ณธ๋ฌธ
[JAVA] BOJ ๋ฐฑ์ค 14891 ํฑ๋๋ฐํด
snowball๐ฐ 2023. 1. 29. 00:42https://www.acmicpc.net/problem/14891
14891๋ฒ: ํฑ๋๋ฐํด
์ฒซ์งธ ์ค์ 1๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋์งธ ์ค์ 2๋ฒ ํฑ๋๋ฐํด์ ์ํ, ์ ์งธ ์ค์ 3๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋ท์งธ ์ค์ 4๋ฒ ํฑ๋๋ฐํด์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. ์ํ๋ 8๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , 12์๋ฐฉํฅ๋ถํฐ
www.acmicpc.net
๋ฌธ์
์ด 8๊ฐ์ ํฑ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ํฑ๋๋ฐํด 4๊ฐ๊ฐ ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ์ผ๋ ฌ๋ก ๋์ฌ์ ธ ์๋ค. ๋, ํฑ๋๋ N๊ทน ๋๋ S๊ทน ์ค ํ๋๋ฅผ ๋ํ๋ด๊ณ ์๋ค. ํฑ๋๋ฐํด์๋ ๋ฒํธ๊ฐ ๋งค๊ฒจ์ ธ ์๋๋ฐ, ๊ฐ์ฅ ์ผ์ชฝ ํฑ๋๋ฐํด๊ฐ 1๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 2๋ฒ, ๊ทธ ์ค๋ฅธ์ชฝ์ 3๋ฒ, ๊ฐ์ฅ ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด๋ 4๋ฒ์ด๋ค.
์ด๋, ํฑ๋๋ฐํด๋ฅผ ์ด K๋ฒ ํ์ ์ํค๋ ค๊ณ ํ๋ค. ํฑ๋๋ฐํด์ ํ์ ์ ํ ์นธ์ ๊ธฐ์ค์ผ๋ก ํ๋ค. ํ์ ์ ์๊ณ ๋ฐฉํฅ๊ณผ ๋ฐ์๊ณ ๋ฐฉํฅ์ด ์๊ณ , ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ด ํ์ ํ๋ค.
ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํค๋ ค๋ฉด, ํ์ ์ํฌ ํฑ๋๋ฐํด์ ํ์ ์ํฌ ๋ฐฉํฅ์ ๊ฒฐ์ ํด์ผ ํ๋ค. ํฑ๋๋ฐํด๊ฐ ํ์ ํ ๋, ์๋ก ๋ง๋ฟ์ ๊ทน์ ๋ฐ๋ผ์ ์์ ์๋ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํฌ ์๋ ์๊ณ , ํ์ ์ํค์ง ์์ ์๋ ์๋ค. ํฑ๋๋ฐํด A๋ฅผ ํ์ ํ ๋, ๊ทธ ์์ ์๋ ํฑ๋๋ฐํด B์ ์๋ก ๋ง๋ฟ์ ํฑ๋์ ๊ทน์ด ๋ค๋ฅด๋ค๋ฉด, B๋ A๊ฐ ํ์ ํ ๋ฐฉํฅ๊ณผ ๋ฐ๋๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. ์๋ฅผ ๋ค์ด, ์๋์ ๊ฐ์ ๊ฒฝ์ฐ๋ฅผ ์ดํด๋ณด์.
๋ ํฑ๋๋ฐํด์ ๋ง๋ฟ์ ๋ถ๋ถ์ ์ด๋ก์ ์ ์ ์ผ๋ก ๋ฌถ์ฌ์๋ ๋ถ๋ถ์ด๋ค. ์ฌ๊ธฐ์, 3๋ฒ ํฑ๋๋ฐํด๋ฅผ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค๋ฉด, 4๋ฒ ํฑ๋๋ฐํด๋ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 2๋ฒ ํฑ๋๋ฐํด๋ ๋ง๋ฟ์ ๋ถ๋ถ์ด S๊ทน์ผ๋ก ์๋ก ๊ฐ๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๊ณ , 1๋ฒ ํฑ๋๋ฐํด๋ 2๋ฒ์ด ํ์ ํ์ง ์์๊ธฐ ๋๋ฌธ์, ํ์ ํ์ง ์๊ฒ ๋๋ค. ๋ฐ๋ผ์, ์๋ ๊ทธ๋ฆผ๊ณผ ๊ฐ์ ๋ชจ์์ ๋ง๋ค๊ฒ ๋๋ค.
์์ ๊ฐ์ ์ํ์์ 1๋ฒ ํฑ๋๋ฐํด๋ฅผ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ์ํค๋ฉด, 2๋ฒ ํฑ๋๋ฐํด๊ฐ ๋ฐ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๊ณ , 2๋ฒ์ด ํ์ ํ๊ธฐ ๋๋ฌธ์, 3๋ฒ๋ ๋์์ ์๊ณ ๋ฐฉํฅ์ผ๋ก ํ์ ํ๊ฒ ๋๋ค. 4๋ฒ์ 3๋ฒ์ด ํ์ ํ์ง๋ง, ๋ง๋ฟ์ ๊ทน์ด ๊ฐ๊ธฐ ๋๋ฌธ์ ํ์ ํ์ง ์๋๋ค. ๋ฐ๋ผ์, ์๋์ ๊ฐ์ ์ํ๊ฐ ๋๋ค.
ํฑ๋๋ฐํด์ ์ด๊ธฐ ์ํ์ ํฑ๋๋ฐํด๋ฅผ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์ฃผ์ด์ก์ ๋, ์ต์ข ํฑ๋๋ฐํด์ ์ํ๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ 1๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋์งธ ์ค์ 2๋ฒ ํฑ๋๋ฐํด์ ์ํ, ์ ์งธ ์ค์ 3๋ฒ ํฑ๋๋ฐํด์ ์ํ, ๋ท์งธ ์ค์ 4๋ฒ ํฑ๋๋ฐํด์ ์ํ๊ฐ ์ฃผ์ด์ง๋ค. ์ํ๋ 8๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , 12์๋ฐฉํฅ๋ถํฐ ์๊ณ๋ฐฉํฅ ์์๋๋ก ์ฃผ์ด์ง๋ค. N๊ทน์ 0, S๊ทน์ 1๋ก ๋ํ๋์๋ค.
๋ค์ฏ์งธ ์ค์๋ ํ์ ํ์ K(1 ≤ K ≤ 100)๊ฐ ์ฃผ์ด์ง๋ค. ๋ค์ K๊ฐ ์ค์๋ ํ์ ์ํจ ๋ฐฉ๋ฒ์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ๊ฐ ๋ฐฉ๋ฒ์ ๋ ๊ฐ์ ์ ์๋ก ์ด๋ฃจ์ด์ ธ ์๊ณ , ์ฒซ ๋ฒ์งธ ์ ์๋ ํ์ ์ํจ ํฑ๋๋ฐํด์ ๋ฒํธ, ๋ ๋ฒ์งธ ์ ์๋ ๋ฐฉํฅ์ด๋ค. ๋ฐฉํฅ์ด 1์ธ ๊ฒฝ์ฐ๋ ์๊ณ ๋ฐฉํฅ์ด๊ณ , -1์ธ ๊ฒฝ์ฐ๋ ๋ฐ์๊ณ ๋ฐฉํฅ์ด๋ค.
์ถ๋ ฅ
์ด K๋ฒ ํ์ ์ํจ ์ดํ์ ๋ค ํฑ๋๋ฐํด์ ์ ์์ ํฉ์ ์ถ๋ ฅํ๋ค. ์ ์๋ ๋ค์๊ณผ ๊ฐ์ด ๊ณ์ฐํ๋ค.
- 1๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 1์
- 2๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 2์
- 3๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 4์
- 4๋ฒ ํฑ๋๋ฐํด์ 12์๋ฐฉํฅ์ด N๊ทน์ด๋ฉด 0์ , S๊ทน์ด๋ฉด 8์
์ฝ๋
์ ์ฒด ์ฝ๋
import java.util.*;
import java.io.*;
/*
* ํฑ๋๋ฐํด์ ํ์ ๋ฐฉํฅ์ ๊ตฌํ์ฌ 12์ ๋ฐฉํฅ ์์น์ ๋ฐ๋ผ ์ ์๋ฅผ ๊ตฌํ๋ ๋ฌธ์
* */
public class BOJ_14891 {
public static void main(String[] args) throws Exception {
Scanner sc = new Scanner(System.in);
String[] settings = new String[4]; // ํฑ๋๋ฐํด์ ๊ทน(N, S)์ ์ ์ฅํ ๋ฐฐ์ด
for (int i = 0; i < 4; i++)
settings[i] = sc.next(); // ํฑ๋๋ฐํด์ ๊ทน ๋ค์ ๋ฐฐ์ด์ ์ ์ฅ
int k = sc.nextInt();
for (int i = 0; i < k; i++) {
int num = sc.nextInt();
int vector = sc.nextInt(); // k๋ฒ์งธ ํ์ ์ num๋ฒ์งธ ํฑ๋๋ฐํด๋ฅผ vector ๋ฐฉํฅ์ผ๋ก ํ๋ ๊ฒ์ด๋ค.
int[] result = new int[4]; // result[i]์๋ i๋ฒ์งธ ํฑ๋๋ฐํด์ ํ์ ๋ฐฉํฅ์ด ๋ด๊ฒจ์๋ค
num--;
result[num] = vector;
for (int j = num - 1; j >= 0; j--) { // ํ์ฌ๋ณด๋ค ์ผ์ชฝ ํฑ๋๋ฐํด๋ค์ ๋ฐฉํฅ ๊ฒฐ์
if (settings[j].charAt(2) != settings[j + 1].charAt(6)) // ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด์ ๊ทน์ด ๋ค๋ฅด๋ฉด
result[j] = (-1) * result[j + 1]; // -1์ ๊ณฑํด ํ์ ๋ฐฉํฅ์ ๋ฐ๋๋ก(0์ธ ๊ฒฝ์ฐ 0์ด ์ ์ฅ๋จ)
else
result[j] = 0; // ๊ทน์ด ๊ฐ๋ค๋ฉด ํ์ ํ์ง ์์
}
for (int j = num + 1; j < 4; j++) { // ํ์ฌ๋ณด๋ค ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด๋ค์ ๋ฐฉํฅ ๊ฒฐ์
if (settings[j].charAt(6) != settings[j - 1].charAt(2))
result[j] = (-1) * result[j - 1];
else
result[j] = 0;
}
for (int j = 0; j < 4; j++)
change_setting(settings, j, result[j]); // ํจ์๋ฅผ ํตํด ํฑ๋๋ฐํด๋ฅผ ํ์ ํด์ค๋ค.
}
int result = 0;
for (int i = 0; i < 4; i++) {
result += (settings[i].charAt(0) - '0') * Math.pow(2, i); // ์ ์ ๊ณ์ฐ. N๊ทน์ธ ๊ฒฝ์ฐ settings๊ฐ์ด 0์ด๋ฏ๋ก 0์ด ๋ํด์ง๋ค.
}
System.out.println(result);
sc.close();
}
static void change_setting(String[] s, int num, int vector) {
/*
* num๋ฒ์งธ ํฑ๋๋ฐํด๋ฅผ vector๋ฐฉํฅ์ผ๋ก ํ์ ํ๋ค ๋ฐฐ์ด์ ๋ค์ ์ ์ฅํ๋ ํจ์
*
* parameter
* String[] s : ํฑ๋๋ฐํด์ ๊ทน์ ์ ์ฅํ ๋ฐฐ์ด
* int num : ํ์ ํ ํฑ๋๋ฐํด์ ์์น
* int vector: ํ์ ๋ฐฉํฅ
*
*/
String news = ""; // ํ์ ํ ๋ค ๊ทน์ ์์น๋ค์ ๋ด์ ๋ณ์
if (vector == 0)
return; // ํ์ ํ์ง ์์ผ๋ฏ๋ก ๋ฐ๋ก returnํ์ฌ ํจ์๋ฅผ ๋น ์ ธ๋๊ฐ
else if (vector == -1) {
news = s[num].substring(1, 8);
news += String.valueOf(s[num].charAt(0)); // ๋ฐ์๊ณ ๋ฐฉํฅ์ธ ๊ฒฝ์ฐ ํฑ๋๋ฐํด์ ๊ทน๋ค์ด index ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ์ผ๋ก ํ์นธ์ฉ ๋ฐ๋ฆฐ๋ค
} else if (vector == 1) {
news = String.valueOf(s[num].charAt(7));
news += s[num]
'๐ Problem Solving > ๐ป Samsung SW Expert' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JAVA] BOJ ๋ฐฑ์ค 15686 ์นํจ ๊ฑฐ๋ฆฌ (0) | 2023.01.29 |
---|---|
[JAVA] BOJ ๋ฐฑ์ค 15683 ๊ฐ์ (0) | 2023.01.29 |
[JAVA] BOJ ๋ฐฑ์ค 14889 ์คํํธ์ ๋งํฌ (0) | 2023.01.29 |
[JAVA] BOJ ๋ฐฑ์ค 14503 ๋ก๋ด ์ฒญ์๊ธฐ (0) | 2023.01.28 |
[JAVA] BOJ ๋ฐฑ์ค 14502๋ฒ ์ฐ๊ตฌ์ (1) | 2023.01.27 |