티스토리 뷰
https://www.acmicpc.net/problem/14499
#include<iostream>
#include<vector>
using namespace std;
int direct[5][2] = { {0,0},{0,1},{0,-1},{-1,0},{1,0} };
int N, M, x, y, K; //지도크기 N, M / 주사위 좌표 x, y / 명령의 개수 K
int dice[7] = { 0 }; //주사위 (0무시, 1 2 3 4 5 6)
vector<vector<int>> map;
int main(void) {
vector<int> result;
//입력
cin >> N >> M >> x >> y >> K;
for (int i = 0; i < N; i++) {
vector<int> temp;
for (int j = 0; j < M; j++) {
int t;
cin >> t;
temp.push_back(t);
}
map.push_back(temp);
}
//초기상태 셋팅
int up = 1, e = 3, w = 4, s = 5, n = 2, down = 6; //주사위 상태
int order; //이동명령 : 동쪽 1 / 서쪽 2 / 북쪽 3 / 남쪽 4
for (int i = 0; i < K; i++) {
cin >> order;
//위치이동 명령
int tx = x + direct[order][0];
int ty = y + direct[order][1];
//이동 후 주사위가 맵안에 존재하는, 유효한 명령일 경우
if (0 <= tx && tx < N && 0 <= ty && ty < M) {
x = tx; //위치 이동
y = ty; //위치 이동
//이동 전 주사위 상태 임시저장
int tup = up, te = e, tw = w, ts = s, tn = n, tdown = down;
//명령의 종류에 따른 주사위 상태 변환
if (order == 1) {
up = tw; down = te; e = tup; w = tdown;
}
if (order == 2) {
up = te; down = tw; e = tdown; w = tup;
}
if (order == 3) {
up = ts; down = tn; s = tdown; n = tup;
}
if (order == 4) {
up = tn; down = ts; s = tup; n = tdown;
}
//이동한 칸의 숫자가 0이면 주사위 바닥면의 숫자를 칸에 복사
//이동한 칸의 숫자가 0이 아니면 칸의 숫자를 주사위 바닥면에 복사, 칸은 0으로
if (map[x][y] == 0) {
map[x][y] = dice[down];
}
else {
dice[down] = map[x][y];
map[x][y] = 0;
}
//각 상태에서 주사위 윗면의 숫자(정답) 입력
result.push_back(dice[up]);
}
else {
continue; //유효한 명령이 아니라면 무시
}
}
//정답 출력
for (int i = 0; i < result.size(); i++)
cout << result[i] << endl;
}
'Algorithm > 유형별 : simulation' 카테고리의 다른 글
[C++] [Simulation] 백준 3190번 : 뱀 (0) | 2019.11.14 |
---|---|
[C++] [Simulation] 백준 1018번 : 체스판 다시 칠하기 (0) | 2019.11.14 |
[C++] [Simulation] 백준 14503번 : 로봇 청소기 (0) | 2019.11.14 |
[C++] [Simulation] 백준 1966번 : 프린터 큐 (0) | 2019.11.14 |
[C++] [Simulation] 백준 1094번 : 막대기 (0) | 2019.11.14 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 다형성
- java 환경설정
- MVC
- Oracle
- java
- view
- .
- OOP
- JdbcTemplate
- select
- 상속
- controller
- 객체
- Delete
- 객체지향
- JDBC 프로그램 작성단계
- Scott/Tiger
- model
- INSERT
- Update
- jdbc
- 추상화
- 캡슐화
- ojdbc6.jar
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함