어흥
[백준 8911] 거북이 (C++) 본문
728x90
반응형
문제 링크: www.acmicpc.net/problem/8911
1. 주의할 점
- 시작은 0,0이고 북쪽방향을 보고 있다
2. 구현
- 시작점, 시작방향 그리고 최대 X,Y와 최소 X,Y를 전부 0으로 초기화한다
- 방향을 전환하는 경우에는 X,Y의 최대최소를 구하지 않아도 된다
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
int dx[4] = { 0,1,0,-1 };
int dy[4] = { -1,0,1,0 };
int main() {
ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
int test;
string str;
cin >> test;
for (int t = 0; t < test; t++) {
cin >> str;
int cx = 0, cy = 0, cd = 0, minX = 0, maxX = 0, minY = 0, maxY = 0;
for (int i = 0; i < str.size(); i++) {
char c = str[i];
if (c == 'L' || c == 'R') {
if (c == 'L')
cd = (cd + 3) % 4;
else
cd = (cd + 1) % 4;
}
else {
if (c == 'F') {
cx += dx[cd];
cy += dy[cd];
}
else {
cx -= dx[cd];
cy -= dy[cd];
}
maxX = max(cx, maxX);
maxY = max(cy, maxY);
minX = min(cx, minX);
minY = min(cy, minY);
}
}
cout << (maxX - minX)*(maxY - minY) << '\n';
}
return 0;
}
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준 10216] Count Circle Groups (C++) (0) | 2020.10.20 |
---|---|
[백준 3273] 두 수의 합 (C++) (0) | 2020.10.19 |
[백준 1965] 상자넣기 (C++) (0) | 2020.10.07 |
[백준 1800] 인터넷 설치 (C++) (0) | 2020.10.04 |
[백준 6443] 애너그램 (C++) (0) | 2020.10.04 |
Comments