반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- os
- NGINX
- 도커
- 쿠버네티스
- kubernetes
- 네트워크
- 운영체제
- C++
- Swift
- swift 클로저
- ios
- 도커 컨테이너
- 도커 명령어
- 도커 이미지
- 데브옵스
- 프로세스
- centOS7
- k8s
- linux
- docker
- 컨테이너
- 리눅스
- centOS
- boj
- 클라우드
- devops
- Python
- 인프라
- AWS
- 부스트코스
Archives
- Today
- Total
귀염둥이의 메모
[백준] 14499번: 주사위 굴리기 (C++) 본문
반응형
주사위를 배열 v와 h를 통해서 표현했다.
명령에 따라서 v와 h를 규칙에 맞게 적절히 업데이트하며 조건에 맞게 코드를 작성했다.
소스코드
#include <bits/stdc++.h>
using namespace std;
int n, m, x, y, k;
int g[20][20];
int d[5][2] = {{0, 0}, {0, 1}, {0, -1}, {-1, 0}, {1, 0}};
int v[4];
int h[3];
queue<int> cmd;
int main(void) {
ios::sync_with_stdio(0);
cin.tie(0);
cin >> n >> m >> x >> y >> k;
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
cin >> g[i][j];
for (int i = 0; i < k; i++) {
int c; cin >> c;
cmd.push(c);
}
while(!cmd.empty()) {
int c = cmd.front(); cmd.pop();
int nx = x + d[c][0];
int ny = y + d[c][1];
if (nx < 0 || nx >= n || ny < 0 || ny >= m) continue;
int tmp = v[3]; // v[3]은 주사위 밑바닥, v[1]과 h[1]은 주사위 윗면
switch (c) {
case 1:
v[3] = h[2];
h[2] = h[1];
h[1] = h[0];
h[0] = tmp;
v[1] = h[1];
break;
case 2:
v[3] = h[0];
h[0] = h[1];
h[1] = h[2];
h[2] = tmp;
v[1] = h[1];
break;
case 3:
v[3] = v[0];
v[0] = v[1];
v[1] = v[2];
v[2] = tmp;
h[1] = v[1];
break;
case 4:
v[3] = v[2];
v[2] = v[1];
v[1] = v[0];
v[0] = tmp;
h[1] = v[1];
break;
}
x = nx; y = ny;
if (g[x][y] == 0) g[x][y] = v[3]; // 지도가 0일 때
else { // 0이 아님
v[3] = g[x][y];
g[x][y] = 0;
}
cout << v[1] << '\n';
}
return 0;
}
반응형
'CS > 백준' 카테고리의 다른 글
[백준] 14891번: 톱니바퀴 (C++) (1) | 2021.04.04 |
---|---|
[백준] 14502번: 연구소 (C++) (0) | 2021.04.03 |
[백준] 2468번: 안전 영역 (C++) (0) | 2021.04.02 |
[백준] 14503번: 로봇 청소기 (C++) (0) | 2021.03.31 |
[백준] 17144번: 미세먼지 안녕! (C++) (0) | 2021.03.30 |
Comments