Skip to content

Conversation

@0224LJH
Copy link
Contributor

@0224LJH 0224LJH commented Sep 16, 2025

🧷 문제 링크

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

🧭 풀이 시간

70분

👀 체감 난이도

✏️ 문제 설명

트럭을 타고 이동하던 중에 상근이는 휴식을 취하기 위해서 호수에 잠시 들렸다. 호수에는 개구리가 살고 있고, 개구리는 호수 위에 떠있는 식물 N개를 점프하면서 다닌다. 오래된 전설에 따르면 개구리에게 키스를 하면 개구리는 아름다운 공주로 변한다고 한다. 일단 개구리를 잡아야 전설이 사실인지 아닌지 확인할 수 있다. 개구리를 잡아보자.

호수는 2차원 평면으로 생각할 수 있고, 식물은 그 평면 위의 점으로 나타낼 수 있다. (x, y)위에 있는 개구리는 아래 네 가지 방향 중 한 방향으로 점프할 수 있다.

임의의 양의 정수 P에 대해서, (x+P, y+P)로 점프할 수 있다. 이 방향을 A라고 한다.
임의의 양의 정수 P에 대해서, (x+P, y-P)로 점프할 수 있다. 이 방향을 B라고 한다.
임의의 양의 정수 P에 대해서, (x-P, y+P)로 점프할 수 있다. 이 방향을 C라고 한다.
임의의 양의 정수 P에 대해서, (x-P, y-P)로 점프할 수 있다. 이 방향을 D라고 한다.

개구리는 네 방향 중 한 방향을 고른다. 그 다음 그 방향에 있는 가장 가까운 식물로 점프를 한다. 만약, 고른 방향에 식물이 없다면, 개구리는 그 위치에 그대로 있는다. 개구리가 점프를 하고 난 이후에, 원래 있던 식물은 호수로 가라앉게되고 사라진다.

상근이는 식물의 위치와 개구리가 고른 방향을 모두 알고 있다. 상근이는 개구리의 점프가 끝나는 꽃의 좌표를 알아낸 다음, 거기서 개구리를 잡으려고 한다.

개구리의 점프가 끝나는 식물의 위치는 어디일까?

🔍 풀이 방법

결국 포인트는 대각선 상에서 가장 가까운 좌표로의 이동이다.

x,y값이 10억 이하이기에 배열로는 불가하고, 식물 개수가 10만개 이하이기에 Set으로 접근했다.
이때 특정 좌표에서 대각선 이동 시 좌표 합 or 좌표 차가 일정하다는 것을 이용하였다.

그리고 어느 방향으로 이동하냐에 따라서 x값이 작아지는 지, 또는 커지는 지에 대해 집중하였다. 이렇게 하면 4가지 분류 기준이 생긴다.

그러면 이때부터는 간단하다.

좌표의 합을 기준으로 정렬하는 TreeSet, 좌표의 차를 기준으로 정렬하는 TreeSet이렇게 두 가지 TreeSet을 만들어서 higher, lower 메서드를 이용하면 해결할 수 있다.

⏳ 회고

오랜만에 세그먼트 트리가 아닌 플레문제를 풀었더니 머리가 개운하다

@0224LJH 0224LJH added the success 👍 해설을 보지 않고 풀었을 때 label Sep 16, 2025
@ShinHeeEul ShinHeeEul merged commit 4b4b7f6 into main Sep 16, 2025
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

success 👍 해설을 보지 않고 풀었을 때

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants