-
백준(BOJ) 2174번 로봇 시뮬레이션알고리즘 풀이/백준(Boj) 2020. 4. 20. 12:55
문제 :
https://www.acmicpc.net/problem/2174
2174번: 로봇 시뮬레이션
문제 가로 A(1≤A≤100), 세로 B(1≤B≤100) 크기의 땅이 있다. 이 땅 위에 로봇들이 N(1≤N≤100)개 있다. 로봇들의 초기 위치는 x좌표와 y좌표로 나타난다. 위의 그림에서 보듯 x좌표는 왼쪽부터, y좌표는 아래쪽부터 순서가 매겨진다. 또한 각 로봇은 맨 처음에 NWES 중 하나의 방향을 향해 서 있다. 초기에 서 있는 로봇들의 위치는 서로 다르다. 이러한 로봇들에 M(1≤M≤100)개의 명령을 내리려고 한다. 각각의 명령은 순차적으로
www.acmicpc.net
풀이 :
v라는 배열에는 각 로봇들의 index와 상태들을 저장해 놓는 곳이다. 따라서 한 로봇이 할 일을 끝냈다면
갱신해 주어야 한다.
v2는 일단 각 로봇들의 하는 일을 모두 기록하고 하나씩 처리하는 곳으로 만들어 두었다.
L과 R이라면 회전은 4가지 방향이니 4로 나눈 나머지만큼 방향을 돌려주고 갱신해준다
F라면 벽과 충돌이 났는지 로봇과 충돌이 났는지 검사한다. 각 로봇들은 자신의 인덱스를 a 배열에
기록해 두며 움직이고 있다.
방향은 평소에 익숙한 y,x로 시작했다. 동남서북으로 이용하다 보니 왼쪽 오른쪽 방향 교체는 쉽지만
문제는 x,y 시작이기 때문에 수정이 필요했다. x, y에서 오른쪽으로 가는 것은 y, x에서 아래로 가는 것을 뜻한다. 해당 조조 건에 맞게 바꾸어 주면 된다.
코드 ( C++ )
'알고리즘 풀이 > 백준(Boj)' 카테고리의 다른 글
백준 (BOJ) 16953번 A → B (0) 2020.05.19 백준(BOJ) 16943번 숫자 재배치 (0) 2020.05.04 백준(BOJ) 17085번 십자가 2개 놓기 (수정) (0) 2020.04.18 백준(BOJ) 15831번 준표의 조약돌 (0) 2020.04.15 백준(BOJ) 1806번 부분합 (0) 2020.04.15