매일 매일 성장하는 섭섭군

[Seop's의 코드풀이] Back_Joon_1085_직사각형에서_탈출 본문

알고리즘 문제풀이/백준

[Seop's의 코드풀이] Back_Joon_1085_직사각형에서_탈출

섭섭군 2019. 10. 24. 13:42
반응형

 

안녕하세요 섭섭군입니다.

 

프로그래을 공부하시는 분들이라면 한번쯤은 들어보셨을 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

이었으며 출력은 

입니다.

 

이해하기 쉽도록 예제 입력을 좌표평면상에 그려보면 다음과 같이 나타낼 수 있습니다.

 

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)

 

문제풀이를 진행하기도 민망한 문제라서 좀 그렇지만

첫 문제풀이 포스팅인 만큼 연습삼아 진행했습니다.

감사합니다.

반응형
Comments