[백준/파이썬] 10041번 풀이

업데이트:



문제 정보


풀이

문제

상근이는 재환이와 함께 제주도에 여행을 가기로 했다.

제주시는 남북방향 도로 W개와 동서방향 도로 H개로 이루어져 있으며, 바둑판 모양을 이루고 있다.

남북방향 도로는 서쪽에서부터 차례대로 1, 2, …, W가 매겨져 있고, 동서방향 도로는 남쪽에서부터 차례대로 1, 2, …, H가 매겨져 있다. i번째 남북 도로와 j번째 동서 도로로 이루어진 교차로를 (i, j)로 나타낸다.

제주시에는 북동방향 도로도 존재한다. 가장 북쪽의 도로와 동쪽 도로에 있는 교차로를 제외한 모든 교차로에는 북동방향 도로가 존재한다. 즉, 교차로 (i,j)에서 (i-1,j-1)이나 (i+1,j+1)이 존재하는 경우에는 그 교차로로 한 번에 이동할 수 있다.

재환이는 자신이 방문하고 싶은 관광지 N개를 미리 정해왔다. i번째로 방문할 관광지는 (Xi, Yi)에 있다. 상근이는 여행에 걸리는 시간을 최소로 하기 위해서 통과해야 하는 길의 개수를 적게 하려고 한다. …

입력 요약
첫째 줄에 W, H, N이 주어진다. (2 ≤ W, H ≤ 10000, 1 ≤ N ≤ 1000)

둘째 줄부터 N개 줄에는 관광지의 위치 Xi, Yi가 주어진다.

출력 요약
관광지를 재환이가 정한 순서대로 방문하면서 통과하는 길의 최소 개수를 출력한다.

코드

w,h,n=map(int,input().split())
s=0
for i in range(n):
    x,y=map(int,input().split())
    if i==0:cx,cy=x,y
    dx,dy=cx-x,cy-y
    if dx*dy>0:s+=max(abs(dx),abs(dy))
    else:s+=abs(dx)+abs(dy)
    cx,cy=x,y
print(s)

설명

핵심은 구현 관점에서 상근이는 재환이와 함께 제주도에 여행을 가기로 했다.

제주시는 남북방향 도로 W개와 동서방향 도로 H개로 이루어져 있으며, 바둑판 모양을 이루고 있다. …를 만족하도록 로직을 구성하는 것입니다.

코드는 입력을 파싱한 뒤 조건 분기와 계산을 순서대로 수행하고, 문제에서 요구한 형식으로 결과를 출력합니다.

경계값과 예외 케이스도 함께 고려해 오답이 나기 쉬운 상황을 방지합니다.



이런 주제는 어떠신가요?

비슷한 난이도와 유형의 문제를 이어서 보면 풀이 감각을 더 빠르게 잡기 좋습니다.

댓글남기기