티스토리 뷰

문제

한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 x, y, w, h가 주어진다.

출력

첫째 줄에 문제의 정답을 출력한다.


코드1

우선 문제를 풀기에 앞서서 왜 자바에서 Scanner가 아닌 BufferedReader로 입력받는지 또 까먹었다. 후다닥 찾아보고 옴. https://snupi.tistory.com/48

맨날 찾아보고 이해하고 또 까먹기를 반복하지만...^^ 또 한번 이해 완료. 

문제 생각보다 쉽길래 한 번에 될 줄 알았고 코드 써보았지만 역시나 아님. 입력값 구분이 줄바꿈이 아닌 공백으로 되는데 줄 단위로 입력받아 생긴 문제인 듯. 귀찮다...



코드2

한 줄 단위로 입력 받고 문자열 배열 안에 입력값을 저장해서 위 오류는 해결했다. 근데 이번에는 그냥 틀림. 결과값이 다름. 왜??? 

 

1이 나와야 되는데 4가 나옴. 왜겠어. 직사각형은 변이 두 개가 아니라 네 개니깐... x축 y축까지의 거리도 확인해야지!


코드3

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader; 

public class BJ1085 {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		String[] input = br.readLine().split(" ");

		int x = Integer.parseInt(input[0]);
		int y = Integer.parseInt(input[1]);
		int w = Integer.parseInt(input[2]);
		int h = Integer.parseInt(input[3]);
		
		int distance1 = w - x;	 
		int distance2 = h - y;
		
		int result = Math.min(distance1, distance2);	
		result = Math.min(result, x);
		result = Math.min(result, y);
		
		System.out.println(result);
		
	}
}

코드 마음에 안들지만 우선... 맞았으니깐 넘어가 보겠습니다.

'Algorithm' 카테고리의 다른 글

[백준 2292번/자바] 벌집  (0) 2023.04.01
[백준 2231번/자바] 분해합  (2) 2023.03.31
[백준 11726번] 자바/2×n 타일링  (0) 2022.11.08
[백준 11726번] 자바/2×n 타일링  (0) 2022.11.08
[백준 1463번] 자바/1로 만들기  (0) 2022.11.06
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/09   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30
글 보관함