그냥 하는 노트와 메모장

BOJ 6084 - Laserphones (레이저 통신) 본문

Solved problems

BOJ 6084 - Laserphones (레이저 통신)

coloredrabbit 2018. 7. 2. 21:40

* BOJ 6084 - Laserphones (레이저 통신)

  [ 분류 - BFS ]


이 문제는 비슷한 문제가 있긴하다. 어떤걸 먼저 풀어도 상관은 없다.

(거울설치 - https://www.acmicpc.net/problem/2151)

 


  문제에서 요구하는 것은 C에서 C로, 레이저를 쏠 때 필요한 거울의 수다. 단 90도 로만 반사된다.


  가령 d방향으로 레이저가 진행하고 있다고 가정해보자. 그렇다면 현재 바라보는 방향을 기준으로 직진, 좌우 밖에 갈 수 없다(180를 반사, 즉 오던 방향으로 쏠 순 없음).


 

 ↑

 

 → 

/

 

 

 

 


 

 

 

 → 

 

 

 ↓

 


 

 

 

 → 

 →

 

 

 



  * 접근 방법

  1. 두 개의 C 중 하나를 Source로 두고, 4 방향으로 레이저를 쏘는 것으로 시작한다. (시작할 때는 어느 방향이라도 가능하기 때문.

  2. 막상 발사가 되면 이 레이저는 되돌아올 수 없다(Source로 돌아온다는 것은 비효율적이기 때문).

  3. 따라서 현재 지점을 (y, x)라고할 때 여기에 방향(벡터)가 들어가기 때문에 해당 방문점을 3차원 배열로 둬야한다.

  4. 마지막에 Source가 아닌 다른 C의 4 방향을 조사하여 가장 적게 사용한 거울 수를 답으로 선택한다.




- 코드


'Solved problems' 카테고리의 다른 글

Algospot - 어린이날 (CHILDRENDAY)  (0) 2018.07.03
BOJ 3987 - VOYAGER (보이저 1호)  (0) 2018.07.03
BOJ 5213 - TOTEM (과외맨)  (0) 2018.07.02
BOJ 1765 - The Gangs  (0) 2018.06.30
BOJ 3964 - 팩토리얼과 거듭제곱  (0) 2018.06.30
Comments