반응형
포인트
- 주사위를 잘 만들 수 있는가?
- 굴렸을 때 규칙을 잘 만들면 된다.
- (맵 크기, 주사위 위치, 명령 수 입력) -> (맵 입력) ->(명령에 따른 주사위 굴리기)
🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다.
c++/cpp
#include <iostream>
using namespace std;
int map[20][20];
int dice[7];
int dx[] = {0, 0, -1, 1};
int dy[] = {1, -1, 0, 0};
int main() {
int n, m, x, y, k;
cin >> n >> m >> x >> y >> k;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> map[i][j];
while (k--) {
int a;
cin >> a;
--a;
int nx = x + dx[a];
int ny = y + dy[a];
if (nx < 0 || nx >= n || ny < 0 || ny >= m) continue;
// 바깥으로 이동시키려고 하는 경우에는 해당 명령을 무시해야 함, 출력도 하면 안됨
if (a == 0) {
// right
swap (dice[1], dice[4]);
swap (dice[4], dice[6]);
swap (dice[6], dice[3]);
}
else if (a == 1) {
// left
swap (dice[1], dice[3]);
swap (dice[3], dice[6]);
swap (dice[6], dice[4]);
}
else if (a == 2) {
// up
swap (dice[1], dice[5]);
swap (dice[5], dice[6]);
swap (dice[6], dice[2]);
}
else {
// down
swap (dice[1], dice[2]);
swap (dice[2], dice[6]);
swap (dice[6], dice[5]);
}
x = nx;
y = ny;
if (map[x][y] == 0) map[x][y] = dice[6];
else {
dice[6] = map[x][y];
map[x][y] = 0;
}
cout << dice[1] << '\n';
}
return 0;
}
python
n, m, x, y, k = map(int, input().split())
data = [list(map(int, input().split())) for _ in range(n)]
dice = [0] * 7
command = list(map(int, input().split()))
dx = [0, 0, -1, 1]
dy = [1, -1, 0, 0]
for ele in command:
ele -= 1
nx, ny = x + dx[ele], y + dy[ele]
if not (0 <= nx < n and 0 <= ny < m):
continue
if ele == 0:
dice[1], dice[4] = dice[4], dice[1]
dice[4], dice[6] = dice[6], dice[4]
dice[6], dice[3] = dice[3], dice[6]
elif ele == 1:
# 4053
# 0534
dice[1], dice[3] = dice[3], dice[1]
dice[3], dice[6] = dice[6], dice[3]
dice[6], dice[4] = dice[4], dice[6]
elif ele == 2:
dice[1], dice[5] = dice[5], dice[1]
dice[5], dice[6] = dice[6], dice[5]
dice[6], dice[2] = dice[2], dice[6]
elif ele == 3:
dice[1], dice[2] = dice[2], dice[1]
dice[2], dice[6] = dice[6], dice[2]
dice[6], dice[5] = dice[5], dice[6]
x, y = nx, ny
if data[nx][ny] == 0:
data[nx][ny] = dice[6]
else:
dice[6] = data[x][y]
data[nx][ny] = 0
print(dice[1])
반응형
댓글