250x250
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 |
Tags
- 완전탐색
- swexpertacademy
- 코테 준비
- 쉬운 알고리즘 문제
- sw expert academy
- 삼성
- BFS
- 코테 대비
- dfs
- 알고리즘 문제
- the midnight library
- englishbook
- 프로그래머스
- 원서
- sw expert
- STUDYENGLISH
- 알고리즘
- 원서읽기
- SQL
- nightroutine
- 원서읽자
- 직무면접
- 백준
- 코딩테스트
- readingbook
- PyQt
- MySQL
- 코테
- D4
- English
Archives
- Today
- Total
시나브로
14499. 주사위 굴리기 본문
728x90
주사위를 하드코딩하지 않고 구현을 하고자 하였지만... 포기하고 주사위 돌리면서 하드코딩했습니다.
Solution
- change함수를 통해 주사위를 돌리고, 주사위의 위치를 변경해줍니다. 단 여기서 주사위 위치의 범위를 체크해줍니다.
- 범위에 벗어나지 않으면, 주사위에 값을 복사하고 맞은편값을 프린트해줍니다.
Key Point
주사위를 굳이 규칙을 차지 말자.... 하드코딩해도 길지 않다!!
직접 주사위를 가지고 돌려가며 인덱스를 확인하면 쉽게 주사위를 돌릴 수 있습니다!
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<vector>
#include<stdlib.h>
#include<queue>
using namespace std;
#define INF 10000000
int dice[6] = { 0 };
int X=0, Y=0;
int n, m, x, y, k;
void swap(int i, int j) {
int box = dice[i];
dice[i] = dice[j];
dice[j] = box;
}
int change(int si) {
int s = dice[0];
switch (si)
{
case 3://북
if (X - 1 >= 0) X--;
else return 0;
dice[0] = dice[1];
dice[1] = dice[5];
dice[5] = dice[4];
dice[4] = s;
break;
case 4://남
if (X + 1 <n) X++;
else return 0;
dice[0] = dice[4];
dice[4] = dice[5];
dice[5] = dice[1];
dice[1] = s;
break;
case 1://동
if (Y + 1 < m) Y++;
else return 0;
dice[0] = dice[2];
dice[2] = dice[5];
dice[5] = dice[3];
dice[3] = s;
break;
case 2:
if (Y - 1 >=0) Y--;
else return 0;
dice[0] = dice[3];
dice[3] = dice[5];
dice[5] = dice[2];
dice[2] = s;
break;
}
return 1;
}
int main(void) {
freopen("inp.inp", "r", stdin);
freopen("out.out", "w", stdout);
cin >> n >> m >> X >> Y >> k;
int map[21][21] = { 0 };
for (int i = 0; i < n; i++) {
for (int j = 0; j < m; j++) {
cin >> map[i][j];
}
}
int box = 0;
for (int i = 0; i < k; i++) {
cin >> box;
if (change(box)) {
if (map[X][Y] == 0)
map[X][Y] = dice[5];
else {
dice[5] = map[X][Y];
map[X][Y] = 0;
}
cout << dice[0] << endl;
}
}
return 0;
}
https://www.acmicpc.net/problem/14499
728x90
'알고리즘 > 백준' 카테고리의 다른 글
14502 연구소 (0) | 2020.06.04 |
---|---|
14501. 퇴사 (0) | 2020.06.04 |
13460. 구술 탈출 2 (0) | 2020.06.03 |
13458. 시험감독 (0) | 2020.06.01 |
1197. 최소 스패닝 트리 (0) | 2020.01.17 |
Comments