Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- BST
- 백준
- Eulerian path
- DynamicProgramming
- implementation
- Dag
- CS Academy
- POJ
- backtracking
- Shortest path
- Euler path
- Algospot
- Greedy
- Segment Tree
- disjoint-set
- dynamic programming
- Euler circuit
- BFSDFS
- scc
- bitmask
- hashing
- flows
- Sieve_of_Eratosthenes
- GCD
- BOJ
- graph
- mathematics
- Eulerian circuit
- Cycle detecting
- graph modeling
Archives
- Today
- Total
그냥 하는 노트와 메모장
BOJ 6084 - Laserphones (레이저 통신) 본문
* 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