티스토리 뷰
https://www.acmicpc.net/problem/14499
14499번: 주사위 굴리기
첫째 줄에 지도의 세로 크기 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이다. 마
www.acmicpc.net
#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
- INSERT
- MVC
- 다형성
- 캡슐화
- Oracle
- Delete
- 상속
- 객체지향
- 추상화
- Scott/Tiger
- ojdbc6.jar
- JdbcTemplate
- model
- view
- 객체
- .
- java 환경설정
- select
- Update
- controller
- OOP
- java
- jdbc
- JDBC 프로그램 작성단계
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함