일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 삼성 SW 기출문제
- 2018 카카오
- 백준
- 2018 KAKAO BLIND RECRUITMENT 1차
- gcp
- 삼성 SW 역량테스트
- 프로그래머스
- 2019 카카오 공채
- 비트마스크
- Baekjoon
- set
- 2019 카카오 개발자 겨울 인턴십 코딩테스트
- 부스트코스
- CS 스터디
- 2020 KAKAO BLIND RECRUITMENT
- 2020 카카오 공채
- 2019 KAKAO BLIND RECRUITMENT
- c++
- 2018 KAKAO BLIND RECRUITMENT
- map
- 2018 카카오 공채
- bfs
- 알고리즘
- 카카오 공채
- 자바
- 젠킨스
- 카카오
- dfs
- Java
- gradle
Archives
- Today
- Total
아무코딩
[백준 14499] 주사위 굴리기 본문
문제풀이
동, 서, 남, 북 4가지 케이스로 움직이는 경우에 따라 면이 바뀌는 경우를 다 정해주는 방식으로 코딩하였다.
회전 4가지마다 다 정의한 경우라 코드 중복이 많은 방법 같지만 직관적으로 바로 떠올리기 쉬운 방법 이고
이러한 방법이 오히려 실제 적용하기 쉽다고 보아 그대로 풀었다.
이동은 모든 케이스르 정의하였고
옮겨질 칸의 적힌 값을 통해 주사위 값과 맵 값의 변화를 주었다.
소스코드
더보기
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
#include <stdio.h>
typedef struct Dice {
int up;
int down;
int left;
int right;
int front;
int back;
}Dice;
Dice dice;
int N, M, x, y, K;
int Map[20][20];
int inst;
int dir_x[4] = {0,0,-1,1};
int dir_y[4] = {1,-1,0,0};
void move_Dice(int dir);
int main() {
scanf("%d %d %d %d %d", &N, &M, &x, &y, &K);
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
scanf("%d", &Map[i][j]);
}
}
for (int i = 0; i < K; i++) {
scanf("%d", &inst);//동 1 서 2 북 3 남 4
move_Dice(inst-1);
}
}
void move_Dice(int dir) {
int next_x, next_y,temp;
next_x = x + dir_x[dir];
next_y = y + dir_y[dir];
if (next_x < 0 || next_y < 0 || next_x >= N || next_y >= M)
return;
x = next_x;
y = next_y;
switch (dir) {
case 0://동
temp = dice.down;
dice.left = temp;
break;
case 1://서
temp = dice.down;
dice.right = temp;
break;
case 2://북
temp = dice.down;
dice.front = temp;
break;
case 3://남
temp = dice.down;
dice.back = temp;
break;
}
if (Map[x][y] == 0)
Map[x][y] = dice.down;
else {
dice.down = Map[x][y];
Map[x][y] = 0;
}
}
|
문제 링크 : https://www.acmicpc.net/problem/14499
'알고리즘 > 백준' 카테고리의 다른 글
[백준 1300] k번째수 (0) | 2020.05.08 |
---|---|
[백준 2252] 줄세우기 (0) | 2020.05.08 |
[백준 14888] 연산자 끼워넣기 (0) | 2020.04.28 |
[백준 2573] 빙산 (0) | 2020.04.27 |
[백준 11559] Puyo Puyo (0) | 2020.04.25 |
Comments