728x90
문제 설명
- 2 차원 배열로 높이가 주어지는 지도에서 높이 차이가 1이고 길이가 L인 경사로를 놓아 지나갈 수 있는 경로의 수를 구하는 문제
- 배열의 크기가 $N \times N$일 때, 행 방향의 N개의 경로가 있고, 열 방향의 N개의 경로가 있어 행 방향과 열 방향 두번 탐색을 해주어야함
고민한 부분
- 경사로를 놓아야 하는 경우는 높이가 낮아지는 경우와 높아지는 경우로 나누어 생각할 수 있고 경사로의 높이는 1로 고정되어 있기 때문에 만약 높이 차이가 1보다 크다면 경로 확인을 멈추면 됨
- 처음에는 램프가 놓인 부분을 표시하는 배열 없이 풀이를 했지만 램프가 겹치는 경우를 제외할 방법을 찾지 못해
check_row
함수에RAMP
리스트를 만들어 경사로가 놓인 부분을 표시해 풀이를 했다. - 행과 열을 입력으로 넣어줄 때 하나의 함수를 사용하기 위해 열 방향의 경로를 입력해 줄 때,
line 64
의 코드처럼 작성했다.
Lesson learned
- 2 차원 배열의 행과 열을 모두 탐색하는 문제를 가장 작은 단위로 나누어보면 하나의 행이나 열을 탐색하는 문제를 풀면 전체 문제를 풀 수 있게 된다. 코드를 작성하기 전에 문제를 작은 단위로 나누어 구현할 기능을 명확하게 한 후 코드를 작성하면 디버깅을 할 때도 전체 코드를 한번에 검사하는 것이 아니라 작은 코드를 검사하면 되기 때문에 편리할 것 같다.
- 이 문제를 해결하며 시간이나 메모리의 제한을 먼저 고민하기보다 우선 기능을 구현한 후에 시간, 메모리 제한 조건을 맞춰가는 것이 나은 전략일 것 같다는 생각을 했다.
'알고리즘 공부 > 백준 문제풀이' 카테고리의 다른 글
[python 백준] 1463번 1로 만들기 (0) | 2022.09.05 |
---|---|
[백준 python] 23288번 주사위 굴리기 2 (0) | 2022.08.15 |
[python 백준] 15685번 드래곤 커브 (0) | 2022.08.07 |
[백준 python] 14501번 퇴사 (0) | 2022.08.05 |
[백준 python] 14889번 스타트와 링크 (0) | 2022.08.05 |