[Seop's의 코드풀이] Back_Joon_1085_직사각형에서_탈출
안녕하세요 섭섭군입니다.
프로그래을 공부하시는 분들이라면 한번쯤은 들어보셨을 Back_Joon에서 문제를 풀고있습니다.
이번 포스팅에서 진행할 문제는 1085번 문제인 직사각형에서의 탈출입니다.
알고리즘 문제풀기의 첫 포스팅이기 때문에 굉장히 쉬운 정답률 57%의 문제로 잡았습니다.
문제는 다음과 같습니다.
https://www.acmicpc.net/problem/1085
1085번: 직사각형에서 탈출
첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.
www.acmicpc.net
문제
한수는 지금 (x, y)에 있다. 직사각형의 왼쪽 아래 꼭짓점은 (0, 0)에 있고, 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 x y w h가 주어진다. w와 h는 1,000보다 작거나 같은 자연수이고, x는 1보다 크거나 같고, w-1보다 작거나 같은 자연수이고, y는 1보다 크거나 같고, h-1보다 작거나 같은 자연수이다.
출력
첫째 줄에 문제의 정답을 출력한다.
예제로 주어진 입력은
6 2 10 3
이었으며 출력은
1
입니다.
이해하기 쉽도록 예제 입력을 좌표평면상에 그려보면 다음과 같이 나타낼 수 있습니다.
x,y에서 가장자리로 가는 가장 짧은 경로를 구하는 문제입니다.
위, 아래, 좌, 우
딱 4가지 경우만 고려하고 이중에서 가장 적은 값을 출력해내면
어렵지 않게 문제를 해결 할 수 있습니다.
경로를 식으로 표현해 보면
왼쪽으로 탈출 : x
오른쪽으로 탈출 : w-x
아래쪽으로 탈출 :y
위쪽으로 탈출 : h-y
참 쉽죠 이거를 배열에 넣든 리스트에 넣든해서
최소값을 구해내면 정답이 나오게 됩니다.
저는 파이썬으로 다음과 같이 구현하였습니다.
x,y,w,h = map(int, input().split(' '))
case = [x,y,w-x,h-y]
answer = min(case)
print(answer)
문제풀이를 진행하기도 민망한 문제라서 좀 그렇지만
첫 문제풀이 포스팅인 만큼 연습삼아 진행했습니다.
감사합니다.