์๊ฐ ์ ํ | ๋ฉ๋ชจ๋ฆฌ ์ ํ | ์ ๋ต ๋น์จ |
1 ์ด | 128 MB | 31.052% |
ํ ์คํธ์ผ์ด์ค
testcase 1
20
13
6 15
7 18
20 14
14 13
11 9
7 10
3 18
10 10
13 13
13 5
6 9
10 4
4 3
19
17 D
36 D
41 D
54 D
56 L
57 L
63 L
68 L
72 L
73 L
76 D
79 D
82 D
85 D
87 D
93 L
105 D
110 D
114 D
์ถ๋ ฅ : 90
testcase 2
5
2
2 5
2 4
6
4 D
5 D
6 D
7 D
8 D
9 D
์ถ๋ ฅ : 14
์ํ์ฐฉ์ค
๋ถํ์ ํ๊ดํ = ์ฌ๊ณผ
ํ ์คํธ์ผ์ด์ค๋ฅผ ์ง๋ฌธ๊ฒ์์์ ์ป์ด์ ๊ทธ๋ ค๋ณด๋๋ฐ ์ด์ฉ์ง ๊ณ์ 85๊ฐ ๋์์ ๋ญ์ง... ํ๋๊น '56 L' ์ด ๋๋ฝ๋์๋ค ใฑ- ์ ๋๋ก ๋ค์ ์์ํ๋ ์ 90์ด๊ฐ ๋์ค๋์ง ์ ์ ์์๋ค.
ํ๋ ธ๋ ์ด์ ์ ํด๊ฒฐ๋ฐฉ๋ฒ
1. ์ด์ ์ ๋ช ๋ฒ ํ๋ ธ์๋๋ฐ ๊ทธ ์ด์ ๋ ๋ฑ์ ์๊ธฐ์์ ์ '๋ชธ'๊ณผ ๋ถ๋ชํ๋ฉด ๊ฒ์์ด ๋๋๊ฒ ๋๋๋ฐ, ๋๋ '๊ผฌ๋ฆฌ' ์์น๋ง ์ ์ฅํ์ฌ ๋ชธ๊ณผ ๋ถ๋ชํ์ ๋๋ฅผ ๋ฌด์ํ๊ณ ๊ณ์ ๊ฒ์์ ์งํํ๊ธฐ ๋๋ฌธ์ ํ๋ ธ๋ค.
์ด๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํ์ฌ ๊ผฌ๋ฆฌ์ ์์น๋ ๊ณ์ ์ ์งํ๋, ๋ฑ์ด ์ง๋๊ฐ๋ ๋ถ๋ถ์ arr[i][j] ๋ผ๊ณ ํ๋ค๋ฉด arr[i][j]=2 ๋ก ๋ฐ๊พธ์ด ๋ฑ์ธ์ง ์๋์ง๋ฅผ ํ๋จํ๊ฒ ํ์๋ค. ๋ฑ์ ๋จธ๋ฆฌ๊ฐ ์ฌ๊ณผ๋ฅผ ๋จน์ง ์์ ๊ผฌ๋ฆฌ๋ฅผ ํ ์นธ ๋น๊ธฐ๊ฒ ๋ ๋๋, ํ์ฌ ๊ผฌ๋ฆฌ ์์น์ ํด๋นํ๋ arr[tail.first][tail.second]=0 ์ผ๋ก ๋ฐ๊พธ๊ณ ๊ผฌ๋ฆฌ์ ๋ฐฉํฅ๋๋ก tail์ ๊ฐฑ์ ํ๋ค.
2. ๋ณ์์ ์๋ฏธ๋ฅผ ํท๊ฐ๋ ธ๋ค.
๋ด๊ฐ ์ฝ๋๋ฅผ ์ง๋ฉด์๋ ๋ก์ง์ ์ ๋๋ก ์๊ฐํ์ง ์๊ณ ๋จผ์ ์ฝ๋๋ฅผ ์์ฑํ๋ค๋ณด๋, ์ฝ๋์์ ์ ์ค์๋ฅผ ํ๊ฒ ๋์ด ๋ณ์์ ๋ํ ํผ๋์ด ์์ ํ๋ฆฌ์ง ์์๋ ๋๋ ๋ถ๋ถ์ ํ๋ ธ๋ค. ์์ผ๋ก๋ ์ ๋๋ก ๋ ธํธ์ ํ๊ธฐ๋ ํ๊ณ ์์ ์ถฉ๋ถํํ๊ณ ์ฝ๋๋ฅผ ์ง์ผ๊ฒ ๋ค.
๋ฉ๋ชจ๋ฆฌ | ์๊ฐ |
1160 KB | 0 ms |
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
|
#include <cstdio>
#include <string.h>
#include <algorithm>
#include <queue>
using namespace std;
int arr[105][105];
int n, K, L, i, idx, tail_idx, dir, tail_dir; //idx ๋ turn ์ ์ธ๋ฑ์ค ๋ฒํธ, dir ์ ๋จธ๋ฆฌ ๋ฐฉํฅ, tail_dir์ ๊ผฌ๋ฆฌ ๋ฐฉํฅ
int dx[] = { 0, 1, 0, -1 };
int dy[] = { 1, 0, -1, 0 };
pair<int, char> turn[105];
pair<int, int> tail;
// ์ฌ๊ณผ๋ 1, ๋ฑ์ 2, ์๋ฌด๊ฒ๋ ์์ผ๋ฉด 0
int main(){
scanf("%d %d", &n, &K);
for (int i = 0, a, b; i < K; i++) {
scanf("%d %d", &a, &b);
arr[a][b] = 1; // ์ฌ๊ณผ
}
scanf("%d", &L);
int X; char C;
for (int i = 0; i < L; i++) {
scanf("%d %c", &X, &C);
turn[i] = { X, C };
}
int r = 1, c = 1, sec = 0, cnt = 0;
arr[1][1] = 2;
tail = { 1,1 };
while (r >= 1 && r <= n && c >= 1 && c <= n) {
int tf = turn[idx].first; char ts = turn[idx].second;
r = r + dx[dir]; c = c + dy[dir];
sec++;
if (arr[r][c] == 2) {
break;
}
if (!arr[r][c]) { // ๊ผฌ๋ฆฌ๊ฐ ์์นํ ์นธ์ ๋น๊ฒจ์ค๋ค.
cnt++;
arr[tail.first][tail.second] = 0;
tail.first = tail.first + dx[tail_dir]; tail.second = tail.second + dy[tail_dir];
}
if (sec == tf) { // ๋จธ๋ฆฌ ๋ฐฉํฅ์ ํ
dir = ts == 'L' ? (dir + 3) % 4 : (dir + 1) % 4;
idx++;
}
if (cnt == turn[tail_idx].first) { // ๊ผฌ๋ฆฌ ๋ฐฉํฅ์ ํ
tail_dir = turn[tail_idx].second == 'L' ? (tail_dir + 3) % 4 : (tail_dir + 1) % 4;
tail_idx++;
}
arr[r][c] = 2;
}
printf("%d", sec);
return 0;
}
|
cs |
'๐ฅ PS(Problem Solving) ๐ฅ > BOJ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ] #14891 ํฑ๋๋ฐํด (0) | 2019.10.02 |
---|---|
[BOJ] #14889 ์คํํธ์ ๋งํฌ (0) | 2019.10.02 |
[BOJ] #16929 Two Dots (0) | 2019.09.29 |
[BOJ] #6359 ๋ง์ทจํ ์๋ฒ (0) | 2019.09.19 |
[BOJ] #14501 ํด์ฌ (0) | 2019.09.19 |
๋๊ธ