공부하고 기록하는, 경제학과 출신 개발자의 노트

프로그래밍/코딩테스트 문제풀이

[Python] 백준 17070. 파이프 옮기기 1

inspirit941 2020. 1. 3. 14:05
반응형

https://www.acmicpc.net/problem/17070

 

17070번: 파이프 옮기기 1

유현이가 새 집으로 이사했다. 새 집의 크기는 N×N의 격자판으로 나타낼 수 있고, 1×1크기의 정사각형 칸으로 나누어져 있다. 각각의 칸은 (r, c)로 나타낼 수 있다. 여기서 r은 행의 번호, c는 열의 번호이고, 행과 열의 번호는 1부터 시작한다. 각각의 칸은 빈 칸이거나 벽이다. 오늘은 집 수리를 위해서 파이프 하나를 옮기려고 한다. 파이프는 아래와 같은 형태이고, 2개의 연속된 칸을 차지하는 크기이다. 파이프는 회전시킬 수 있으며, 아래와 같이

www.acmicpc.net

이전에 풀었던 '등굣길' 형태의 길찾기 문제의 심화 버전 느낌이었다.

 

[Python] 프로그래머스. 등굣길 (Level 3)

https://programmers.co.kr/learn/courses/30/lessons/42898 코딩테스트 연습 - 등굣길 | 프로그래머스 계속되는 폭우로 일부 지역이 물에 잠겼습니다. 물에 잠기지 않은 지역을 통해 학교를 가려고 합니다. 집에..

inspirit941.tistory.com

좌표평면에서 해당 좌표까지 도착하는 방법의 개수를 구하면 되는데, 좌표에 도달하는 방법의 개수가 3개라는 차이점이 있다.

 

따라서 가로로 도착하는 경우 / 세로로 도착하는 경우 / 대각선으로 도착하는 경우 세 가지로 나눠서 생각해야 하며,

[y좌표][x좌표][도착하는 방법] 3차원 리스트로 만들어 해결했다.

 

현재 좌표를 x, y라고 하면

 

가로 모양의 현재 좌표 = 가로 모양 (x-1, y) 좌표까지 이동한 방법 + 대각선 모양 (x-1, y) 좌표까지 이동한 방법

세로 모양의 현재 좌표 = 세로 모양 (x, y-1) 좌표까지 이동한 방법 + 대각선 모양 (x, y-1) 좌표까지 이동한 방법

이 된다.

 

대각선은 가로 -> 대각선, 세로 -> 대각선, 대각선 -> 대각선 세 가지 형태가 있으므로

대각선 모양의 현재 좌표 = 가로 모양 (x-1, y-1) 좌표까지 이동한 방법 + 대각선 모양 (x-1, y-1) 좌표까지 이동한 방법 + 세로 모양 (x-1, y-1) 좌표까지 이동한 방법이 된다.

 

 

반응형