백준 Lonesome Partners

KIMYEONGJUN·2026년 4월 16일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

Line 1: A single integer: N
Lines 2..N+1: Line i+1 contains the integer coordinate location of cow i: X_i and Y_i

Line 1: Two sorted integers that are the indices of the two cows that are located farthest apart.

내가 이 문제를 보고 생각해본 부분

먼저 BufferedReader와 StringTokenizer를 사용해 입력을 받는다.
좌표를 각각 X[i], Y[i] 배열에 1번부터 저장한다. 
0번은 사용하지 않고 1부터 인덱스를 맞춘 이유는 문제에서 소의 번호가 1부터 시작하기 때문이다.
모든 소 위치를 입력받은 뒤, 서로 다른 모든 쌍 (i,j)에 대해 2중 반복문으로 거리를 계산한다.
거리 계산은 좌표 차이를 제곱해 더한 값을 Math.sqrt로 루트를 씌워 구했다.
최대 거리보다 큰 거리를 발견하면 값을 갱신하고, 해당 소들의 번호도 cow1, cow2에 저장한다.
반복문이 끝난 후 두 소의 번호를 오름차순으로 맞춰 출력한다.
문제에서 가장 멀리 떨어진 두 소의 결과가 항상 유일하기 때문에 최대 거리만 비교하면 충분하다.

코드로 구현

package baekjoon.baekjoon_34;

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

// 백준 6013번 문제
public class Main1360 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());

        int[] X = new int[N + 1];
        int[] Y = new int[N + 1];

        for (int i = 1; i <= N; i++) {
            StringTokenizer st = new StringTokenizer(br.readLine());
            X[i] = Integer.parseInt(st.nextToken());
            Y[i] = Integer.parseInt(st.nextToken());
        }

        double maxDist = -1;
        int cow1 = 1, cow2 = 2;

        for (int i = 1; i <= N; i++) {
            for (int j = i + 1; j <= N; j++) {
                double dist = Math.sqrt(Math.pow(X[i] - X[j], 2) + Math.pow(Y[i] - Y[j], 2));
                if (dist > maxDist) {
                    maxDist = dist;
                    cow1 = i;
                    cow2 = j;
                }
            }
        }

        // 출력 시 오름차순으로 정렬해서 출력
        if (cow1 < cow2) {
            System.out.println(cow1 + " " + cow2);
        } else {
            System.out.println(cow2 + " " + cow1);
        }

        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글