티스토리 뷰

PS

백준 2174. 로봇 시뮬레이션

tose33 2022. 6. 7. 15:43

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
링크
«   2025/04   »
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
글 보관함