백준 C++
백준 14890 경사로 C++
Srff5123
2025. 5. 11. 18:48
728x90
1. 문제 설명
크기가 N x N인 크기의 지도가 있다.
지도의 각 칸에는 해당 칸의 높이가 입력되어 있다.
이 지도에서 지나갈 수 있는 길이 몇개 있는지 알아보려고 한다.
여기에서 길은 시작 행 또는 열의 끝까지 직진하여 가는 것을 하나의 길이라고 한다.
길을 지나갈 경우 현재 높이와 같은 칸의 높이만 이동이 가능하며
높이 차이가 있는 경우 높이가 1이고 길이가 L인 경사로를 설치해 길을 만들 수 있다. (경사로의 개수를 무한)
길이가 L이기에 L개의 연속된 칸에 경사로의 바닥이 모두 접해 있어야 설치가 가능하며, 높이차이는 1이어야 한다.
경사로를 설치가 가능한지 확인할 수 있는 함수를 만들어 준다.
현재 좌표에서 다음 좌표와 높이 차이가 있는지 확인을 하고
높이차이가 0이면 그냥 갈 수 있고, 2이 이상이면 설치 불가능
1 또는 -1이면 경사로 설치가 가능하며
맵의 크기와 설치가 가능한 위치에 있는지 확인을 한 후 true false값을 리턴하여 확인한다.
함수가 완성이 되었다면 메인 함수에서
행과 열을 따로 for문을 각각 만들어 검사를 해준다.
경사로 설치 가능함수를 사용하기 위해
열은 따로 열에대한 값을 따로 1차원배열로 값을 받아 사용해 반복함수가 없도록 한다.
728x90