728x90

import java.util.Arrays;
import java.util.Scanner;
/**
* Mission2 깜짝과제 2번
* 가장 가까운 좌표 값 화면에 출력하는 프로그램
*
* @author : 이희영
*/
public class Coordinate {
/**
* 좌표 입력
*/
public static void inputCoordinate() {
Scanner sc = new Scanner(System.in);
int myX = 0;
int myY = 0;
System.out.println("내 좌표 x값을 입력해 주세요.");
myX = sc.nextInt();
System.out.println("내 좌표 y값을 입력해 주세요.");
myY = sc.nextInt();
int size = 10;
int[][] xyArr = new int[size][2];
double[] dist = new double[size];
for (int i = 0; i < size; i++) {
int x = 0;
int y = 0;
System.out.printf("%d/%d 번째 입력", i + 1, size);
System.out.println("임의의 좌표 x값을 입력해 주세요.");
x = sc.nextInt();
System.out.println("임의의 좌표 y값을 입력해 주세요.");
y = sc.nextInt();
for (int j = 0; j < i; j++) {
if (x == xyArr[j][0] && y == xyArr[j][1]) {
System.out.println("동일한 좌표값이 이미 존재합니다. 다시 입력해주세요.");
i--;
}
}
xyArr[i][0] = x;
xyArr[i][1] = y;
dist[i] = Math.sqrt(Math.pow(xyArr[i][0] - myX, 2) + Math.pow(xyArr[i][1] - myY, 2));
}
print(myX, myY, xyArr, dist);
}
/**
* 출력
* @param myX 내 x 좌표
* @param myY 내 y 좌표
* @param xyArr 임의의 x, y 좌표 배열
* @param dist 내 좌표와의 거리
*/
public static void print(int myX, int myY, int[][] xyArr, double[] dist) {
double minDist = Arrays.stream(dist).min().getAsDouble();
int mindDistIdx = 0;
for (int i = 0; i < xyArr.length; i++) {
System.out.printf("(%d, %d) => %f\n", xyArr[i][0], xyArr[i][1], dist[i]);
if (dist[i] == minDist) {
mindDistIdx = i;
}
}
System.out.println("제일 가까운 좌표:");
System.out.printf("(%d, %d) => %f", xyArr[mindDistIdx][0], xyArr[mindDistIdx][1], dist[mindDistIdx]);
}
public static void main(String[] args) {
inputCoordinate();
}
}

728x90
'📌Zero-base' 카테고리의 다른 글
| 페이지네비게이션 구현 제로베이스 백엔드 스쿨 깜짝과제 3번 (0) | 2024.05.13 |
|---|---|
| property.html 파일 만드는 코드 작성하기 제로베이스 백엔드 스쿨 깜짝과제 1번 (0) | 2024.05.13 |
| 백엔드 신입 개발자가 쌓아야 하는 역량은? 제로베이스 백엔드스쿨 (0) | 2024.05.01 |
| Java 람다식, 스트림 (0) | 2024.04.29 |
| 코딩테스트 힌트 문제 풀기 2 (프로그래머스, 백준) 자바 (1) | 2024.04.29 |