https://www.acmicpc.net/problem/1085
1085번: 직사각형에서 탈출
한수는 지금 (x, y)에 있다. 직사각형은 각 변이 좌표축에 평행하고, 왼쪽 아래 꼭짓점은 (0, 0), 오른쪽 위 꼭짓점은 (w, h)에 있다. 직사각형의 경계선까지 가는 거리의 최솟값을 구하는 프로그램
www.acmicpc.net
현재 좌표가 오른쪽 위 꼭짓점과 가까운지 원점과 가까운지 판단하고 값이 더 작은(가까운) 값을 최소값으로 선택한다.
x,y 중에도 최소값을 찾아야 하므로 마지막에 비교하여 가장 최소값을 찾는다.
C
#include <stdio.h>
int main() {
int x, y, w, h;
int a,b,c;
scanf("%d %d %d %d", &x, &y, &w, &h); //현재 좌표(x,y), 오른쪽 꼭짓점(w,h)
if ((w - x) < x) {
a = w - x;
}
else
a = x;
if ((h - y) < y) {
b = h-y;
}
else
b = y;
if (a < b) {
c = a;
printf("%d ", c);
}
else {
c = b;
printf("%d ", c);
}
return 0;
}
java
scanner대신 bufferedreader 사용하고 입력받는 값 사이에 " " 공백으로 분리해주기
package javastd1;
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.StringTokenizer;
public class bj1085 {
public static void main(String[] args) throws IOException {
// TODO Auto-generated method stub
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());
int a,b,c;
if ((w - x) < x) {
a = w - x;
}
else
a = x;
if ((h - y) < y) {
b = h-y;
}
else
b = y;
if (a < b) {
c = a;
System.out.println(c);
}
else {
c = b;
System.out.println(c);
}
}
}
'공부하자 > 알고리즘' 카테고리의 다른 글
[백준] 1541번 잃어버린 괄호 C (0) | 2022.01.11 |
---|---|
[백준] 3009번 네 번째 점 C, java (0) | 2022.01.08 |
[백준] 2217번 로프 C, java (0) | 2022.01.06 |
[백준] 10162번 전자레인지 C, java (0) | 2022.01.05 |
[백준] 5585번 거스름돈 C, java (0) | 2022.01.04 |