[Problem Solving/Java] 백준 1085번 - 직사각형에서 탈출

2024. 1. 2. 14:16·알고리즘 문제 풀이 (Problem Solving)

https://www.acmicpc.net/problem/1085

 

1085번: 직사각형에서 탈출

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

www.acmicpc.net

문제

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

입력

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

출력

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

첫 번째 시도

package ex1; 
import java.io.BufferedReader; 
import java.io.IOException; 
import java.io.InputStreamReader; 
import java.util.ArrayList; 

public class Main3 { 
public static void main(String[] args) throws IOException { 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
String a[] = br.readLine().split(" "); 
float x = Float.parseFloat(a[0]); 
float y = Float.parseFloat(a[1]); 
float w = Float.parseFloat(a[2]); 
float h = Float.parseFloat(a[3]); 

if(x>=w/2&&y>=h/2) { 
if(w-x>=h-y) { 
System.out.println((int)(h-y)); 
}else if(w-x<h-y) { 
System.out.println((int)(w-x)); 
} 
} 
else if(x<w/2&&y>=h/2) { 
if(x>=h-y) { 
System.out.println((int)(h-y)); 
}else if(x<h-y) { 
System.out.println((int)x); 
} 
} 
else if(x<w/2&&y<h/2) { 
if(x>=y) { 
System.out.println((int)y); 
}else if(x<y) { 
System.out.println((int)x); 
} 
} 
else if(x>=w/2&&y<h/2) { 
if(w-x>=y) { 
System.out.println((int)y); 
}else if(w-x<y) { 
System.out.println((int)(w-x)); 
} 
} 
} 
}
  • 처음에는 직사각형의 구간을 4등분해서 풀었다. 주어진 직사각형의 가로 세로의 절반이 되는 정 중앙의 점을 기준으로 4등분했다. 그 4등분한 각 면에서 다시 x좌표와 y좌표 중 가까운 좌표를 그대로 출력하거나 가로 또는 세로의 길이와 빼서 출력했다. 문제를 푸는 도중 틀렸다고 나온 경우가 있었는데, 정수형에서 그냥 나눗셈 연산을 할 경우 몫만 나오기 때문에 계산에 오차가 생겼다. 따라서 Float형으로 바꿔 계산한 후 다시 Int형으로 바꿔 출력했다.

참고

  • 위 코드를 작성할 때 아래의 코드를 참고했다.
import java.io.*; 
import java.util.*; 
public class Main { 
public static void main(String[] args) throws Exception { 
BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); 
StringTokenizer st = new StringTokenizer(br.readLine()); 
int x = Integer.parseInt(st.nextToken()); 
int y = Integer.parseInt(st.nextToken()); 
int w = Integer.parseInt(st.nextToken()); 
int h = Integer.parseInt(st.nextToken()); 

//x,w-x,y,h-y중 가장 작은 값 
int[] arr = {x,w-x,y,h-y}; 
int min = x; 
for(int i=0;i<arr.length;i++) { 
if(min > arr[i]) { 
min = arr[i]; 
} 
} 
System.out.println(min); 
} 
}
반응형

'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글

[Problem Solving/Java] 백준 4153번 - 직각삼각형  (0) 2024.01.02
[Problem Solving/Java] 백준 3009번 - 네 번째 점  (1) 2024.01.02
[Problem Solving/Java] 백준 4948번 - 베르트랑 공준  (2) 2024.01.02
[Problem Solving/Java] 백준 1929번 - 소수 구하기  (0) 2024.01.02
[Problem Solving/Java] 백준 2581번 - 소수  (0) 2023.08.30
'알고리즘 문제 풀이 (Problem Solving)' 카테고리의 다른 글
  • [Problem Solving/Java] 백준 4153번 - 직각삼각형
  • [Problem Solving/Java] 백준 3009번 - 네 번째 점
  • [Problem Solving/Java] 백준 4948번 - 베르트랑 공준
  • [Problem Solving/Java] 백준 1929번 - 소수 구하기
LoopThinker
LoopThinker
모르는 것을 알아가고, 아는 것을 더 깊게 파고드는 공간
  • LoopThinker
    CodeMemoir
    LoopThinker
  • 전체
    오늘
    어제
    • 분류 전체보기 (231)
      • 개발 (Development) (165)
        • Algorithm (1)
        • Angular (1)
        • AWS (6)
        • DeepSeek (2)
        • Docker (7)
        • Git (3)
        • Java (34)
        • JavaScript (4)
        • Kafka (5)
        • Kubernetes (4)
        • Linux (7)
        • PostgreSQL (38)
        • Python (31)
        • React (3)
        • TypeScript (3)
        • Vue.js (5)
        • General (11)
      • 데이터 분석 (Data Analysis) (1)
      • 알고리즘 문제 풀이 (Problem Solving.. (27)
      • 자격증 (Certifications) (24)
        • ADsP (14)
        • 정보처리기사 (4)
        • Linux Master (5)
        • SQLD (1)
      • 기술 동향 (Tech Trends) (11)
      • 기타 (Others) (3)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    PostgreSQL
    docker
    오답노트
    데이터분석
    javascript
    자바
    python
    JSON
    리눅스 마스터 2급 2차
    springboot
    MyBatis
    Linux
    DevOps
    AWS
    백준자바
    Kubernetes
    백준
    Vue.js
    pandas
    java
    리눅스 마스터 2급
    deepseek
    백준알고리즘
    timescaledb
    백준온라인저지
    Kafka
    Spring boot
    ADsP
    Linux master
    JPA
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
LoopThinker
[Problem Solving/Java] 백준 1085번 - 직사각형에서 탈출
상단으로

티스토리툴바