티스토리 뷰
https://www.acmicpc.net/problem/2174
2174번: 로봇 시뮬레이션
첫째 줄에 두 정수 A, B가 주어진다. 다음 줄에는 두 정수 N, M이 주어진다. 다음 N개의 줄에는 각 로봇의 초기 위치(x, y좌표 순) 및 방향이 주어진다. 다음 M개의 줄에는 각 명령이 명령을 내리는 순
www.acmicpc.net
주어지는 땅의 위치가 행 번호가 반대로 햇갈리게 주어진다.
하지만 문제를 읽어보면 로봇의 좌표는 최초에 로봇들의 위치만을 나타낼뿐 문제를 해결하는데 이후에 좌표가 필요하지는 않다.
따라서 처음에 좌표를 읽을때만 행이 r이라면 (세로길이 B - r + 1) 이런 식으로 바꿔주면 정상적인 행열 번호가 되고, 이후에는 신경쓰지 않아도 된다.
네 방향으로 이동 가능하기 때문에 dr, dc를 다음과 같이 해준다.
int dr[] = {-1, 0, 1, 0} // 북, 동, 남, 서
int dc[] = {0, 1, 0, -1)
따라서 왼쪽 회전은 로봇의 현재 방향에서 1을 빼면되고, 오른쪽 회전은 1을 더하면 된다.
예를들어 현재 로봇의 방향이 동쪽(1)일때 왼쪽 회전하면 1을 빼서 북(0)이 된다.
물론 빼서 -1이 될때와 더해서 4가 될때는 처리해줘야 한다.
회전은 제자리에서 회전할 뿐이기 때문에 문제에서 발생하는 잘못된 명령은 F 명령, 즉 앞으로 이동할때만 발생한다.
나는 F 명령이 발생하면 해당 로봇의 정보에 따라 다음 좌표를 계산해서 반영하기 전에 에러를 체크해서 에러가 있다면 에러 정보 출력후 종료 시키고, 에러가 없다면 로봇에 새로운 위치를 반영해줬다.
'PS' 카테고리의 다른 글
백준 7490. 0 만들기 (0) | 2022.06.13 |
---|---|
백준 20058. 마법사 상어와 파이어스톰 (0) | 2022.06.10 |
백준 21609. 상어 중학교 (0) | 2022.06.06 |
백준 17825. 주사위 윷놀이 (0) | 2022.06.04 |
백준 19237. 어른 상어 (0) | 2022.06.03 |
- Total
- Today
- Yesterday
- binary search
- dfs
- MVC
- db
- priority queue
- Brute Force
- Spring
- two pointer
- CSS
- C++
- 재귀
- Stack
- permutation
- floyd warshall
- Dijkstra
- DP
- Tree
- Kruskal
- C
- 자료구조
- 조합
- BFS
- back tracking
- Python
- Unity
- 이분탐색
- Implementation
- graph
- recursion
- greedy
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |