01-07 02:28
Recent Posts
Recent Comments
Tags
- TSQL
- RaspberryPi
- Java
- ํ์ด์ฌ
- SQL
- ์กํ๊ณ
- ํ์ด์
- API๋ง์ผํ๋ ์ด์ค
- ์คํฝ์ค๋น
- Naver Cloud
- python
- ict๊ณต๋ชจ์
- ์จ์ผ๋ํ
- JOBํ๊ณ
- Spring
- ICT
- API MarketPlace ๊ธ๋ก๋ฒ ์ํฌํฐ์ฆ
- linux
- ํ์ด์๊ณต๋ชจ์
- ์คํฝ๋ ํ
- ์๋ฐ
- ์๋์ด๋ ธ
- ์ด๋ธ์
- ํ๋ก๋ณด๋ ธ
- appetizer
- DB
- ICT๋ฉํ ๋ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค
- mysql
- DATABASE
- Today
- Total
miinsun
[BAEKJOON] ๋ฐฑ์ค ๊ตฌํ 14499 :: ์ฃผ์ฌ์ ๊ตด๋ฆฌ๊ธฐ ๋ณธ๋ฌธ
๐ฌ ๋ฌธ์ ์ค๋ช
ํฌ๊ธฐ๊ฐ N×M์ธ ์ง๋๊ฐ ์กด์ฌํ๋ค. ์ง๋์ ์ค๋ฅธ์ชฝ์ ๋์ชฝ, ์์ชฝ์ ๋ถ์ชฝ์ด๋ค. ์ด ์ง๋์ ์์ ์ฃผ์ฌ์๊ฐ ํ๋ ๋์ฌ์ ธ ์์ผ๋ฉฐ, ์ฃผ์ฌ์์ ์ ๊ฐ๋๋ ์๋์ ๊ฐ๋ค. ์ง๋์ ์ขํ๋ (r, c)๋ก ๋ํ๋ด๋ฉฐ, r๋ ๋ถ์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์, c๋ ์์ชฝ์ผ๋ก๋ถํฐ ๋จ์ด์ง ์นธ์ ๊ฐ์์ด๋ค.
์ฃผ์ฌ์๋ ์ง๋ ์์ ์ ๋ฉด์ด 1์ด๊ณ , ๋์ชฝ์ ๋ฐ๋ผ๋ณด๋ ๋ฐฉํฅ์ด 3์ธ ์ํ๋ก ๋์ฌ์ ธ ์์ผ๋ฉฐ, ๋์ฌ์ ธ ์๋ ๊ณณ์ ์ขํ๋ (x, y) ์ด๋ค. ๊ฐ์ฅ ์ฒ์์ ์ฃผ์ฌ์์๋ ๋ชจ๋ ๋ฉด์ 0์ด ์ ํ์ ธ ์๋ค.
์ง๋์ ๊ฐ ์นธ์๋ ์ ์๊ฐ ํ๋์ฉ ์ฐ์ฌ์ ธ ์๋ค. ์ฃผ์ฌ์๋ฅผ ๊ตด๋ ธ์ ๋, ์ด๋ํ ์นธ์ ์ฐ์ฌ ์๋ ์๊ฐ 0์ด๋ฉด, ์ฃผ์ฌ์์ ๋ฐ๋ฅ๋ฉด์ ์ฐ์ฌ ์๋ ์๊ฐ ์นธ์ ๋ณต์ฌ๋๋ค. 0์ด ์๋ ๊ฒฝ์ฐ์๋ ์นธ์ ์ฐ์ฌ ์๋ ์๊ฐ ์ฃผ์ฌ์์ ๋ฐ๋ฅ๋ฉด์ผ๋ก ๋ณต์ฌ๋๋ฉฐ, ์นธ์ ์ฐ์ฌ ์๋ ์๋ 0์ด ๋๋ค.
์ฃผ์ฌ์๋ฅผ ๋์ ๊ณณ์ ์ขํ์ ์ด๋์ํค๋ ๋ช ๋ น์ด ์ฃผ์ด์ก์ ๋, ์ฃผ์ฌ์๊ฐ ์ด๋ํ์ ๋ ๋ง๋ค ์๋จ์ ์ฐ์ฌ ์๋ ๊ฐ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ฃผ์ฌ์๋ ์ง๋์ ๋ฐ๊นฅ์ผ๋ก ์ด๋์ํฌ ์ ์๋ค. ๋ง์ฝ ๋ฐ๊นฅ์ผ๋ก ์ด๋์ํค๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ช ๋ น์ ๋ฌด์ํด์ผ ํ๋ฉฐ, ์ถ๋ ฅ๋ ํ๋ฉด ์ ๋๋ค.
๐จ ์ ์ถ๋ ฅ ์
์ ๋ ฅ
- ์ฒซ์งธ ์ค์ ์ง๋์ ์ธ๋ก ํฌ๊ธฐ N, ๊ฐ๋ก ํฌ๊ธฐ M (1 ≤ N, M ≤ 20), ์ฃผ์ฌ์๋ฅผ ๋์ ๊ณณ์ ์ขํ x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), ๊ทธ๋ฆฌ๊ณ ๋ช ๋ น์ ๊ฐ์ K (1 ≤ K ≤ 1,000)๊ฐ ์ฃผ์ด์ง๋ค.
- ๋์งธ ์ค๋ถํฐ N๊ฐ์ ์ค์ ์ง๋์ ์ฐ์ฌ ์๋ ์๊ฐ ๋ถ์ชฝ๋ถํฐ ๋จ์ชฝ์ผ๋ก, ๊ฐ ์ค์ ์์ชฝ๋ถํฐ ๋์ชฝ ์์๋๋ก ์ฃผ์ด์ง๋ค. ์ฃผ์ฌ์๋ฅผ ๋์ ์นธ์ ์ฐ์ฌ ์๋ ์๋ ํญ์ 0์ด๋ค. ์ง๋์ ๊ฐ ์นธ์ ์ฐ์ฌ ์๋ ์๋ 10 ๋ฏธ๋ง์ ์์ฐ์ ๋๋ 0์ด๋ค.
- ๋ง์ง๋ง ์ค์๋ ์ด๋ํ๋ ๋ช ๋ น์ด ์์๋๋ก ์ฃผ์ด์ง๋ค. ๋์ชฝ์ 1, ์์ชฝ์ 2, ๋ถ์ชฝ์ 3, ๋จ์ชฝ์ 4๋ก ์ฃผ์ด์ง๋ค.
์ถ๋ ฅ
- ์ด๋ํ ๋๋ง๋ค ์ฃผ์ฌ์์ ์ ๋ฉด์ ์ฐ์ฌ ์๋ ์๋ฅผ ์ถ๋ ฅํ๋ค. ๋ง์ฝ ๋ฐ๊นฅ์ผ๋ก ์ด๋์ํค๋ ค๊ณ ํ๋ ๊ฒฝ์ฐ์๋ ํด๋น ๋ช ๋ น์ ๋ฌด์ํด์ผ ํ๋ฉฐ, ์ถ๋ ฅ๋ ํ๋ฉด ์ ๋๋ค.
์์ ์ ๋ ฅ 1)
4 2 0 0 8
0 2
3 4
5 6
7 8
4 4 4 1 3 3 3 2
์์ ์ถ๋ ฅ 1)
0
0
3
0
0
8
6
3
์์ ์ ๋ ฅ 2)
3 3 1 1 9
1 2 3
4 0 5
6 7 8
1 3 2 2 4 4 1 1 3
์์ ์ถ๋ ฅ 2)
0
0
0
3
0
1
0
6
0
โ
์์ ์ ๋ ฅ 3)
2 2 0 0 16
0 2
3 4
4 4 4 4 1 1 1 1 3 3 3 3 2 2 2 2
์์ ์ถ๋ ฅ 3)
0
0
0
0
์์ ์ ๋ ฅ 4)
3 3 0 0 16
0 1 2
3 4 5
6 7 8
4 4 1 1 3 3 2 2 4 4 1 1 3 3 2 2
์์ ์ถ๋ ฅ 4)
0
0
0
6
0
8
0
2
0
8
0
2
0
8
0
2
โ
๐ป Main.java
๊ตฌํ์ ๋ ์ด๋ ต๊ณ ์๋ก์๋ผ,, ์ด๋ฒ ๋ฌธ์ ๋ ์ฃผ์ฌ์๋ฅผ ์ด๋ค์์ผ๋ก ์์ง์ด๋ ์ง๋ฅผ ๊ตฌํํ๋ฉด ๋ค๋ฅธ ๋ถ๋ถ์ ์ฝ๊ฒ ๊ตฌํ ํ ์ ์์๋ค.
- ์ฃผ์ฌ์๋ฅผ ๋์ชฝ์ผ๋ก ์์ง์ผ๋๋ฅผ ์๋ฅผ ๋ค์ด
- ์ฃผ์ฌ์๋ฅผ ํ๋์ ๋ฐฐ์ด๋ก ์๊ฐํ์ ๋,
- dice[0]์ ์์น์๋ dice[3]์ด ์ค๊ณ , dice[3]์ ์์น์๋ dice[5]๊ฐ dice[5]์๋ dice[2]๊ฐ ์ค๊ฒ๋๋ฉฐ dice[2]์๋ dice[0]์ด ๋๋ค.
- ์ด๋ dice[0]์ dice[3]์ผ๋ก ๊ฐฑ์ ๋๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ์ ์ฅํด๋ฌ์ผํ๋ค.
- ๋์ชฝ์ธ์ ๋ค๋ฅธ ๋ฐฉํฅ๋ ์ด์ ๊ฐ์ ๋ฐฉ์์ผ๋ก ์ด๋ํด์ฃผ๋ฉด ๋๋ค.
- ์ฃผ์ฌ์์ ์๋จ์ ํญ์ dice[0]์ด๊ณ ๋ฐ๋ฉด์ ํญ์ dice[5]์ธ ๊ฒ์ ์ฐธ๊ณ ํด์ ์ง๋์ ์ฃผ์ฌ์ ๊ฐ์ ๋ณต์ฌํด์ฃผ๋ฉด ๋๋ค.
<์ ์ฒด ์ฝ๋>
import java.util.*;
public class Main {
static int[] dx = {0, 0, -1, 1};
static int[] dy = {1, -1, 0, 0};
static int[] dice = new int[6];
static int[][] board;
static void copyMap(int x, int y){
if(board[x][y] == 0){
board[x][y] = dice[5];
}
else{
dice[5] = board[x][y];
board[x][y] = 0;
}
}
static void moveDice(int cmd){
int tmp = dice[0];
switch (cmd){
// ๋์ชฝ์ด๋
case 1:
dice[0] = dice[3];
dice[3] = dice[5];
dice[5] = dice[2];
dice[2] = tmp;
break;
// ์์ชฝ์ด๋
case 2:
dice[0] = dice[2];
dice[2] = dice[5];
dice[5] = dice[3];
dice[3] = tmp;
break;
// ๋ถ์ชฝ์ด๋
case 3:
dice[0] = dice[4];
dice[4] = dice[5];
dice[5] = dice[1];
dice[1] = tmp;
break;
// ๋จ์ชฝ์ด๋
case 4:
dice[0] = dice[1];
dice[1] = dice[5];
dice[5] = dice[4];
dice[4] = tmp;
break;
}
}
public static void main(String[] args) {
StringBuilder sb = new StringBuilder();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt(); // ์ง๋์ ์ธ๋ก ํฌ๊ธฐ
int m = sc.nextInt(); // ์ง๋์ ๊ฐ๋ก ํฌ๊ธฐ
int x = sc.nextInt(); // ์ฃผ์ฌ์์ ์ขํ
int y = sc.nextInt();
int k = sc.nextInt(); // ๋ช
๋ น์ ๊ฐ์
// ์ง๋ ์
๋ ฅ
board = new int[n][m];
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
board[i][j] = sc.nextInt();
}
}
// ๋ช
๋ น ์คํ
for(int i = 0; i < k; i++){
// ๋์ชฝ์ 1, ์์ชฝ์ 2, ๋ถ์ชฝ์ 3, ๋จ์ชฝ์ 4
int cmd = sc.nextInt();
int nx = x + dx[cmd - 1];
int ny = y + dy[cmd - 1];
// ๊ฒฝ๊ณ๊ฐ ๊ฒ์ฌ
if(nx >= n || nx < 0 || ny >= m || ny < 0)
continue;
// ์ฃผ์ฌ์ ์ด๋
moveDice(cmd);
// ์ฃผ์ฌ์ & ์ง๋ ๊ฐ ๋ณต์ฌ
copyMap(nx, ny);
sb.append(dice[0]).append('\n');
// ์ฃผ์ฌ์์ ์ขํ ๊ฐฑ์
x = nx;
y = ny;
}
System.out.print(sb);
}
}
'Algorithm > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BAEKJOON] ๋ฐฑ์ค ๊ทธ๋ํ 3190 :: ๋ฑ (0) | 2022.07.14 |
---|---|
[BAEKJOON] ๋ฐฑ์ค BFS 14497 :: ์ฃผ๋์ ๋ (0) | 2022.07.09 |
[BAEKJOON] ๋ฐฑ์ค BFS 12851 :: ์จ๋ฐ๊ผญ์ง 2 (0) | 2022.07.08 |
[BAEKJOON] ๋ฐฑ์ค BFS 2636 :: ์น์ฆ (0) | 2022.06.15 |
[BAEKJOON] ๋ฐฑ์ค BFS 2589 :: ๋ณด๋ฌผ์ฌ (0) | 2022.06.15 |
Comments