[20250830] BOJ / G4 / 스카이라인 쉬운거 / 이종환 #776
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
🧷 문제 링크
https://www.acmicpc.net/problem/1863
🧭 풀이 시간
20분
👀 체감 난이도
✏️ 문제 설명
스카이라인만을 보고서 도시에 세워진 건물이 몇 채인지 알아 낼 수 있을까? 건물은 모두 직사각형 모양으로 밋밋하게 생겼다고 가정한다.
정확히 건물이 몇 개 있는지 알아내는 것은 대부분의 경우에 불가능하고, 건물이 최소한 몇 채 인지 알아내는 것은 가능해 보인다. 이를 알아내는 프로그램을 작성해 보자.
첫째 줄에 n이 주어진다. (1 ≤ n ≤ 50,000) 다음 n개의 줄에는 왼쪽부터 스카이라인을 보아 갈 때 스카이라인의 고도가 바뀌는 지점의 좌표 x와 y가 주어진다. (1 ≤ x ≤ 1,000,000. 0 ≤ y ≤ 500,000) 첫 번째 지점의 x좌표는 항상 1이다.
🔍 풀이 방법
고민을 많이 했는데, 잘 생각해보니 우선 X좌표는 필요하지 않다. 결국 어느 높이가 언제 나오는 지를 확인하면 된다. 그렇기에 PQ를 이용하여서 넣었다. 지금 PQ에 있는 Y값중 제일 높은 것부터 새로운 값과 비교하며, 더 작다면 PQ에서 내보내고 건물 개수를 하나 추가하는 식으로 해결하였다.
⏳ 회고
굳이 어려운 로직, 어려운 알고리즘 쓰려고 하지 말아야겠다.