๋ฌธ์ ๋งํฌ
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๊ฐ์ ์ค์ ์ง
www.acmicpc.net
ํน๋ณํ ์๊ณ ๋ฆฌ์ฆ ์์ด ํ ์ ์๋ ์๋ฎฌ๋ ์ด์ ๋ฌธ์ .
ํ์ด
์ ๋ง ํน๋ณํ ์๊ณ ๋ฆฌ์ฆ ์์ด ๋ช ๋ น์ด 1(๋์ชฝ), 2(์์ชฝ), 3(๋ถ์ชฝ), 4(๋จ์ชฝ) ์ค์ ๋ฌด์์ธ์ง์ ๋ฐ๋ผ ์ฃผ์ฌ์๋ฅผ ๊ตด๋ ค์ฃผ๊ธฐ๋ง ํ๋ฉด๋๋ค. ๋ง์ฝ ์ด๋ํ์ ๋ ๋ฒ์๋ฅผ ๋ฒ์ด๋๋ค๋ฉด ์คํตํด์ฃผ๋ฉด ๋๋ค.
4๋ฐฉํฅ์ผ๋ก ๊ตด๋ ธ์ ๋ ๊ฐ ๋ฉด์ด ์ด๋๋ฉด์ผ๋ก ์ด๋ํ๋์ง๋ง ์ ์๊ฐํด๋ณด๋ฉด ํ ์ ์๋ ๋ฌธ์ ์ด๋ค. ์๋ฅผ ๋ค์ด์ ์ฒ์์ 1๋ฒ์ด ์๋ฅผ ๋ณด๊ณ 3๋ฒ์ด ๋์ชฝ์ ๋ณด๊ณ ์์๋๋ฐ, ๋์ชฝ์ผ๋ก ๊ตด๋ฆฌ๋ฉด 1๋ฒ์ด ๋์ชฝ์ ๋ณด๊ฒ๋๊ณ 3๋ฒ์ ๋ฐ๋ฅ์ผ๋ก ํฅํ๊ฒ ๋๋ค.
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
|
#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <cstdio>
#include <string.h>
#include <string>
#include <stack>
#include <vector>
#include <math.h>
#include <queue>
#include <climits>
#include <algorithm>
#include <iomanip>
#include <map>
#define mod 998244353
using namespace std;
typedef long long ll;
typedef priority_queue<pair<int, pair<int, int>>, vector<pair<int, pair<int, int>>>, greater<pair<int, pair<int, int>>>> Priority_queue;
const int INF = INT_MAX;
const int MAX_N = 20 + 5;
int Map[MAX_N][MAX_N];
int dice[7];
int N, M , K;
int Top, Bottom, East, West, North, South;
int dx[] = { 1,-1,0,0 };
int dy[] = { 0,0,-1,1 };
void Rolling_Dice(int cmd, pair<int,int> next) {
int New_Top = 0, New_Bottom = 0, New_West = 0, New_North = 0, New_South = 0, New_East = 0;
if (cmd == 1) {
New_Bottom = East;
New_East = Top;
New_Top = West;
New_West = Bottom;
New_North = North;
New_South = South;
}
else if (cmd == 2) {
New_West = Top;
New_Top = East;
New_Bottom = West;
New_East = Bottom;
New_North = North;
New_South = South;
}
else if (cmd == 3) {
New_North = Top;
New_Top = South;
New_Bottom = North;
New_South = Bottom;
New_East = East;
New_West = West;
}
else if (cmd == 4) {
New_Top = North;
New_South = Top;
New_Bottom = South;
New_North = Bottom;
New_East = East;
New_West = West;
}
Top = New_Top;
South = New_South;
North = New_North;
Bottom = New_Bottom;
East = New_East;
West = New_West;
if (Map[next.first][next.second] != 0) {
dice[Bottom] = Map[next.first][next.second];
Map[next.first][next.second] = 0;
}
else if (Map[next.first][next.second] == 0) {
Map[next.first][next.second] = dice[Bottom];
}
}
bool is_ok(int y, int x) {
if (y < 0 || y >= N || x < 0 || x >= M)
return false;
return true;
}
int main(void) {
ios_base::sync_with_stdio(false);
cin.tie(NULL);
pair<int, int> now;
int X, Y;
cin >> N >> M >> Y >> X >> K;
now.first = Y;
now.second = X;
for (int i = 0; i < N; i++) {
for (int j = 0; j < M; j++) {
cin >> Map[i][j];
}
}
Top = 1;
Bottom = 6;
East = 3;
West = 4;
North = 2;
South = 5;
for (int i = 0; i < K; i++) {
int cmd;
cin >> cmd;
pair<int, int> next;
next = { now.first + dy[cmd-1], now.second + dx[cmd-1] };
if (!is_ok(next.first, next.second))
continue;
Rolling_Dice(cmd, next);
now = next;
cout << dice[Top] << "\n";
}
return 0;
}
|
cs |
์ฒ์์ ์๋ฌด๋ฆฌ๋ด๋ ๋ง๋ ์ฝ๋์ธ๋ฐ 50%์์ ํ๋ฆฌ๋ ๊ฒ๋ ์๋๊ณ ์์ํ์๋ง์ ํ๋ ค์ ํ์ฐธ์ ์ฝ๋๋ฅผ ๋ค์ฌ๋ค๋ดค๋ค. ์์ ๋ 4๊ฐ ๋ค ์๋์ค๋๋ฐ ๊ณ์ ํ๋ ค์ ๋ฌธ์ ๋ฅผ ๋ค์ ์ฝ์๋ค.
๋ณดํต y๊ฐ ์ธ๋ก์ถ ์ขํ๋ฅผ ์๋ฏธํ๊ณ x๊ฐ ๊ฐ๋ก์ถ ์ขํ๋ฅผ ์๋ฏธํ๋ค๊ณ ์๊ฐํ๋๊ฒ ์ผ๋ฐ์ ์ด๋ค. (y,x) ์ด๋ ๊ฒ ๋ง์ด๋ค. ๊ทธ๋์ ์ฒ์์ x ์ ๋ ฅ ํ y๋ฅผ ์ ๋ ฅํ๋ค๊ณ ํด์ ๊ฐ๋ก์ถ ์ขํ ๋จผ์ ์ ๋ ฅ๋ฐ๊ณ ์ธ๋ก์ถ ์ขํ๋ฅผ ์ ๋ ฅ๋ฐ๋๊ตฌ๋ ์๊ฐํ๋ค.
์ฃผ์ฌ์๋ฅผ ๋์ ๊ณณ์ ์ขํ x, y(0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1)
N์ด ์ธ๋ก ์ต๋ ๋ฒ์, M์ด ๊ฐ๋ก์ ๋ฒ์์ธ๋ฐ, ๋ฒ์๋ฅผ ๋ณด๋ฉด X๊ฐ 0~N-1์ฌ์ด ์ฆ, ์ธ๋ก ๋ฒ์. Y๊ฐ 0์์ M-1 ์ฌ์ด ์ฆ, ๊ฐ๋ก ๋ฒ์์ ์์๋ค. ์ถ์ ์๋ ์ขํ๋ฅผ (x,y)๋ก ๋๊ณ ๋ฌธ์ ๋ฅผ ๋ธ ๊ฒ์ด๋ค.
์ด๊ฒ๋๋ฌธ์ ํ์ฐธ์ ์ฝ์งํ๋ค.
์์ ์์ x,y ์ขํ๊ฐ ๋์ผํ (1,1), (0,0) ๋ฑ์ ๋ด์ค์ ์์ ๋ ๋ค ๋ง์๋ ๊ฒ์ด๋ค.
์๋ง ์ด ๋ฌธ์ ๋ฅผ ํค๋งค๊ณ ์๋ ์ฌ๋๋ค์ด ์๋ค๋ฉด ๋๋ถ๋ถ ๊ฐ์ ์ด์ ์ด์ง ์์๊น ์๊ฐํ๋ค.
'๋ฐฑ์ค > Gold' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] 10021 : Watering the Fields (0) | 2022.04.14 |
---|---|
[BOJ] 15684 : ์ฌ๋ค๋ฆฌ ์กฐ์ (0) | 2022.04.14 |
[BOJ] 18866 : ์ ์ ๋ ์ ์์ด์ฌ (0) | 2022.04.08 |
[BOJ] 18858 : ํ๋ จ์๋ก ๊ฐ๋ ๋ (0) | 2022.04.06 |
[BOJ] 5582 : ๊ณตํต ๋ถ๋ถ ๋ฌธ์์ด (0) | 2022.04.05 |