본문 바로가기

알고리즘 (2020 : 08 : 10 ~ )/구현, 시뮬

[백준 / BOJ] 2174 로봇 시뮬레이션

문제

출처 : www.acmicpc.net/problem/2174

 

2174번: 로봇 시뮬레이션

첫째 줄에 두 정수 A, B가 주어진다. 다음 줄에는 두 정수 N, M이 주어진다. 다음 N개의 줄에는 각 로봇의 초기 위치(x, y좌표 순) 및 방향이 주어진다. 다음 M개의 줄에는 각 명령이 명령을 내리는 순

www.acmicpc.net

로봇의 위치와 각 명령이 주어졌을때, 시뮬레이션을 안전하게 돌릴수 있는지 확인하는 문제다.

 

명령은 다음 3개가 있다.

  1. L: 로봇이 향하고 있는 방향을 기준으로 왼쪽으로 90도 회전한다.
  2. R: 로봇이 향하고 있는 방향을 기준으로 오른쪽으로 90도 회전한다.
  3. F: 로봇이 향하고 있는 방향을 기준으로 앞으로 한 칸 움직인다.

로봇이 명령을 수행하다가 다른로봇 혹은 벽과 충돌할경우 다음을 출력하고 종료한다.

  1. Robot X crashes into the wall: X번 로봇이 벽에 충돌하는 경우이다. 즉, 주어진 땅의 밖으로 벗어나는 경우가 된다.
  2. Robot X crashes into robot Y: X번 로봇이 움직이다가 Y번 로봇에 충돌하는 경우이다.

풀이

문제그대로 풀면 풀리는 문제다. 몇가지 주의? 해야할게 있었는데, (이것때문에 많이 틀림)

 

1. 모든 입력은 (X,Y)로 주어짐.

-> 다른문제처럼 Y,X로 입력받다가 여러번 틀렸음

 

2. 배열의 시작지점(1,1)은 왼쪽 하단부터임.

-> 1,1지점을 왼쪽 상단으로 잡고 풀었다가 틀렸음 이렇게하면, N으로 이동했을때, Y-- 연산을 하게되서 틀림 (N이동은 Y++임)

 

소스코드

https://github.com/devxb/JJUNalgo/blob/master/2174%20%EB%A1%9C%EB%B4%87%20%EC%8B%9C%EB%AE%AC%EB%A0%88%EC%9D%B4%EC%85%98/main.cpp

 

devxb/JJUNalgo

백준 알고리즘 소스코드🙃. Contribute to devxb/JJUNalgo development by creating an account on GitHub.

github.com