백준 알고리즘 1085번
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
예전에 풀다가 실패하고서 안푼 문제.
오늘 다시 풀어서 못푼 문제 리스트에서 없애려고 풀었다!!
1085번
입력으로 좌표 두 개가 주어진다.
첫 번째 좌표(A)는 내가 위치해있는 좌표. 두 번째 좌표(B)는 직사각형에서 오른쪽 위 좌표.
주어진 좌표에서 직사각형의 경계선까지 가는 거리가 최소인 것을 구해서 출력해준다.
직사각형에서 꼭짓점의 좌표
왼쪽 위 (0, h) 오른쪽 위 (w, h) B
왼쪽 아래 (0, 0) 오른쪽 아래(w, 0)
문제 해결
(a, b)일 때, 직사각형의 경계선인 경우
1. a가 0이고 b가 h와 같거나 작다.
2. b가 0이고 a가 w와 같거나 작다.
3. a가 w고 b가 h와 같거나 작다.
4. b가 h고 a가 w와 같거나 작다.
따라서 크기가 4인 int형 배열을 넣어서 A가 4가지 경우가 될 때 필요한 거리를 각각 넣어준다.
그리고 정렬해준 후 배열의 첫 번째 값을 출력해준다.
코드
import java.util.Arrays;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
// TODO Auto-generated method stub
Scanner sc = new Scanner(System.in);
String input = sc.nextLine();
String[] strArr = input.split(" ");
int x = Integer.parseInt(strArr[0]);
int y = Integer.parseInt(strArr[1]);
int w = Integer.parseInt(strArr[2]);
int h = Integer.parseInt(strArr[3]);
int[] answer = new int[4];
answer[0] = x;
answer[1] = y;
answer[2] = w - x;
answer[3] = h - y;
Arrays.sort(answer);
System.out.println(answer[0]);
}
}
결과
ㅎㅎ 왜 못풀었는지 모르겠다.
이거 풀 때의 나 멍청했네!!
728x90
'Algorithm' 카테고리의 다른 글
백준 1158번 <요세푸스 문제> (0) | 2020.08.26 |
---|---|
백준 10845번 <큐> (0) | 2020.08.26 |
백준 1406번 <에디터> (0) | 2020.08.25 |
백준 9093번 <단어 뒤집기> (0) | 2020.08.24 |
백준 1874번 <스택 수열> (0) | 2020.08.20 |
댓글