๋ฌธ์
https://www.acmicpc.net/problem/14891
๋ด ๋ฌธ์ ํ์ด
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.StringTokenizer;
public class Main {
static char[][] ns = new char[4][]; // ๊ฐ ๊ธฐ์ด๋ค์ n, s๊ทน ์ ๋ณด
static int[] dirs; // ๊ฐ ๊ธฐ์ด๋ค์ด ๊ฐ๊ฒ ๋ ํ์ ๋ฐฉํฅ ์ ๋ณด
// ๊ฐ ํฑ๋์ ํ์ ๋ฐฉํฅ์ ๋ง๊ฒ ํ์ ์์ผ์ฃผ๋ ๋ฉ์๋
public static void spin() {
int tmp = 0;
for(int i = 0; i < 4; i++) {
// ์๊ณ ๋ฐฉํฅ
if(dirs[i] == 1) {
tmp = ns[i][7];
for(int j = 7; j > 0; j--) ns[i][j] = ns[i][j - 1];
ns[i][0] = (char)tmp;
}
// ๋ฐ์๊ณ ๋ฐฉํฅ
if(dirs[i] == -1) {
tmp = ns[i][0];
for(int j = 0; j < 7; j++) ns[i][j] = ns[i][j + 1];
ns[i][7] = (char)tmp;
}
}
}
public static void main(String[] args) throws Exception {
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
for(int i = 0; i < 4; i++) ns[i] = in.readLine().toCharArray();
int num = Integer.parseInt(in.readLine());
for(int i = 0; i < num; i++) {
st = new StringTokenizer(in.readLine());
int tobni = Integer.parseInt(st.nextToken()) - 1; // ํ์ ์ ์์ํ๋ ํฑ๋์ ์ธ๋ฑ์ค
dirs = new int[4];
dirs[tobni] = Integer.parseInt(st.nextToken());
// ์ผ์ชฝ ํฑ๋๋ฐํด ๊ฒ์ฌ
for(int j = (tobni - 1); j >= 0; j--) {
if(ns[j][2] == ns[j+1][6]) break;
else dirs[j] = -dirs[j+1];
}
// ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด ๊ฒ์ฌ
for(int j = (tobni + 1); j < 4; j++) {
if(ns[j][6] == ns[j-1][2]) break;
else dirs[j] = -dirs[j-1];
}
spin(); // ๊ฐ ํฑ๋ ํ์
}
// ๊ฒฐ๊ณผ ์ถ๋ ฅ
int answer = 0;
int[] score = {1, 2, 4, 8};
for(int i = 0; i < 4; i++) {
if(ns[i][0] == '1') answer += score[i];
}
System.out.println(answer);
}
}
๐ ๊ตฌํ, ์๋ฎฌ๋ ์ด์ ๋ฌธ์
[๋ณ์ ์ค๋ช ]
- static char[][] ns : ์ ๋ ฅ๋๋ ๊ธฐ์ด๋ค์ n, s๊ทน ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค. (n๊ทน 0, s๊ทน 1)
- static int[] dirs : ๊ฐ ๊ธฐ์ด๋ค์ด ํ์ ํด์ผ ํ ๋ฐฉํฅ์ ๋ํ ์ ๋ณด๋ฅผ ๊ฐ์ง๋ค. (์๊ณ 1, ๋ฐ์๊ณ -1, ํ์ ์ํจ 0)
- tobni : ํ์ ์ ์์ํ๋ ํฑ๋์ ์ธ๋ฑ์ค
[ํ์ด ์ค๋ช ]
ํ์ ์ ์์ํ๋ ํฑ๋๋ฐํด ๊ธฐ์ค, ์ผ์ชฝ๊ณผ ์ค๋ฅธ์ชฝ์ ๊ฒ์ฌํ๋ฉฐ ๊ฐ ํฑ๋๋ฐํด๋ง๋ค ํ์ ์ ๋ฌด ๋ฐ ๋ฐฉํฅ์ ์ฐพ๊ณ ,
๊ฐ ํฑ๋์ ํ์ ๋ฐฉํฅ์ ๋ง๊ฒ tmp ๋ณ์๋ฅผ ์ด์ฉํ์ฌ ๋ฐฐ์ด์ ์์๋ค์ ์ด๋์์ผ์ฃผ์๋ค.
- ์ฒซ ๋ฒ์งธ๋ก ํ์ ํ๋ ํฑ๋๋ฐํด๋ฅผ -1ํ์ฌ ์
๋ ฅ๋ฐ์๋ค. (์ธ๋ฑ์ค๋ก ํ์ฉํ๊ธฐ ์ํด)
๊ทธ๋ฆฌ๊ณ dirs ๋ฐฐ์ด์ tobni ์๋ฆฌ์ ํด๋น ํฑ๋๋ฐํด์ ํ์ ๋ฐฉํฅ์ ์ ์ฅํด์ฃผ์๋ค. (๋๋จธ์ง ์๋ฆฌ๋ 0) - ํ์ ์์ ํฑ๋๋ฐํด๋ฅผ ๊ธฐ์ค์ผ๋ก ์ผ์ชฝ, ์ค๋ฅธ์ชฝ์ ์ฐจ๋ก๋๋ก ๊ฒ์ฌํ์๋๋ฐ,
ํญ์ ์ผ์ชฝ ํฑ๋๋ฐํด์ 2๋ฒ ์ธ๋ฑ์ค์ ์ค๋ฅธ์ชฝ ํฑ๋๋ฐํด์ 6๋ฒ ์ธ๋ฑ์ค๊ฐ ๋ง๋ฟ์ผ๋ฏ๋ก
์ด๋ฌํ ์ ์ ์ด์ฉํ์ฌ ๋ง๋ฟ์ ๋ถ๋ถ์ ๊ฐ์ด ๋ค๋ฅผ ๊ฒฝ์ฐ ๋ฐฉํฅ์ - ํ์ฌ dirs์ ์ ์ฅํ๋ค. - ๊ฒ์ฌ ์๋ฃ ์ spin ๋ฉ์๋๋ฅผ ํธ์ถํ์ฌ ๊ฐ ํฑ๋๋ฐํด์ ํ์ ์ ์งํํ๋ค.
dirs์ ์ ์ฅ๋ ๊ฐ์ด 0์ผ ๊ฒฝ์ฐ ํ์ ํ์ง ์๋ ํฑ๋๋ฐํด์ด๋ฏ๋ก ๋ฐ๋ก ์กฐ๊ฑด์ ์ง์ ํ์ง ์์๊ณ ,
1(์๊ณ ๋ฐฉํฅ)์ผ ๊ฒฝ์ฐ์ -1(๋ฐ์๊ณ ๋ฐฉํฅ)์ผ ๊ฒฝ์ฐ๋ฅผ ๋๋ ์ ํ์ ์ ์์ผ์ฃผ์๋ค. - ์๊ณ ๋ฐฉํฅ๊ณผ ๋ฐ์๊ณ ๋ฐฉํฅ์ ๊ฒฝ์ฐ ๊ฐ๊ฐ ๋ง์ง๋ง, ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ tmp์ ์ ์ฅํ๊ณ
๋๋จธ์ง ์์๋ค์ ํ ์นธ์ฉ ์ด๋์ํค๋ ์์ผ๋ก ๊ตฌํํ๋ค.
๐ก ํผ๋๋ฐฑ
- ํ์ด์ ์๊ฐ์ ์์ฒญ ๋ง์ด ์์ํ๋ค. ํฌ๊ฒ ์ด๋ ค์ด ๋ฌธ์ ๋ ์๋์์ง๋ง,
์๋ฐ ์ธ์ด๊ฐ ์ต์ํ์ง ์์๋ ๋ถ๋ถ๋ ์๊ฒ ๊ณ ,
๋ด๊ฐ ๊ผผ๊ผผํ ๋ฌธ์ ๋ฅผ ํ์ดํ์ง ๋ชปํ๋ ๋ฌธ์ ๋ ์๋ ๊ฒ ๊ฐ๋ค. - ์๋ฎฌ๋ ์ด์
๋ฌธ์ ์ ๊ฒฝ์ฐ ์๊ฐํด์ฃผ์ด์ผ ํ ์์ธ๋ ์กฐ๊ฑด๋ค์ ๋ช
ํํ ์ง์ผ์ฃผ๋ ๊ฒ์ด ์ค์ํ๋ฏ๋ก
๋์ฑ ๊ผผ๊ผผํ ๋ฉ๋ชจํ๊ณ ๊ณํํ์ฌ ๋ฌธ์ ๋ฅผ ํ์ดํ๋ ์ต๊ด์ ๊ธธ๋ฌ์ผ ํ๊ฒ ๋ค.
'2๏ธโฃ Java > Problem Solving' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java Algorithm] ๋ถ BOJ #5427 (0) | 2022.08.08 |
---|---|
[Java Algorithm] ์จ๋ฐ๊ผญ์ง 3 BOJ #13549 (0) | 2022.08.08 |
[Java Algorithm] ๋ฒฝ ๋ถ์๊ณ ์ด๋ํ๊ธฐ BOJ #2206 (0) | 2022.08.08 |
[Java Algorithm] ์ ๊ธฐํ ์์ BOJ #2023 (0) | 2022.08.05 |
[Java Algorithm] ํ BOJ #2493 (0) | 2022.08.05 |
๋๊ธ