ALGORITHM/BOJ
[BOJ] 17070번 파이프 옮기기 1 (C++)
yegyeom
2021. 12. 21. 12:02
문제 (https://www.acmicpc.net/problem/17070)
17070번: 파이프 옮기기 1
유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의
www.acmicpc.net
가능한 이동 방법은 아래와 같다.
1. 파이프가 가로 방향일 때
- 오른쪽 방향
- 오른쪽 아래 대각선 방향
2. 파이프가 세로 방향일 때
- 아래 방향
- 오른쪽 아래 대각선 방향
3. 파이프가 대각선 방향일 때
- 오른쪽 방향
- 아래 방향
- 오른쪽 아래 대각선 방향
파이프의 오른쪽 끝 위치(x, y), 현재 파이프의 방향(가로/세로/대각선)(dir)과 함께 dfs를 실행하면 된다. 나는 dir을 0: 가로, 1: 세로, 2: 대각선으로 설정했고 3가지 이동방향도 가로-세로-대각선 순서로 저장해두었다.
- dir이 0이고 이동방향이 1인 경우는 (파이프: 가로, 이동: 세로) 불가능하므로 제외
- dir이 1이고 이동방향이 0인 경우는 (파이프: 세로, 이동: 가로) 불가능하므로 제외
- 나머지 경우는 파이프를 이동했을 때 1의 존재 여부를 체크해주면서 실행하면 된다.