Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 | 31 |
Tags
- 프로그래머스
- GitHub
- 쿠링
- Coroutine
- android
- 암호학
- TEST
- boj
- 코드포스
- textfield
- ProGuard
- Compose
- Codeforces
- activity
- Python
- 백준
- Rxjava
- relay
- Coroutines
- livedata
- AWS
- pandas
- Gradle
- Hilt
- MyVoca
- Kotlin
- architecture
- MiTweet
- 코루틴
- androidStudio
Archives
- Today
- Total
이동식 저장소
17619. 개구리 점프 본문
1개월 반만에 백준 문제를 풀어 보았다.
17619번: 개구리 점프
첫 번째 줄에 통나무 개수 N과 질문의 개수 Q가 주어진다. 다음 N개의 줄에 각 통나무에 x1, x2, y의 세 정수 좌표가 주어진다. 주어진 통나무는 두 점 (x1, y)와 (x2, y)를 잇는 형태이다. (x1 < x2) 모든
www.acmicpc.net
조건을 자세히 읽어 보면, 다음을 관찰할 수 있다.
1. 점프할 때 다른 통나무를 건너뛸 수 없다고 적혀 있지만, 건너뛰는 통나무에 내렸다가 가면 되기 때문에 의미없는 조건이다.

따라서 세로 좌표는 의미가 없고, 가로로만 겹쳐 있으면 이동할 수 있다고 간주해도 좋다.
2. 두 통나무 $A$와 $B$($A.x_{1} \le B.x_{1}$)가 있을 때, $A$와 $B$가 가로로 겹칠 조건은 $B.x_{1} \le A.x_{2}$이다.

3. $A$와 $B$가 겹친다면, $A$와 $B$를 하나의 통나무로 간주해도 된다. 앞서 말했듯이 $y$는 의미가 없기 때문.

1, 2, 3을 조합하여 문제를 해결해 보자.
우선 통나무를 $x_{1}$의 오름차순으로 정렬한 후(정렬할 때 $y$는 신경쓰지 않아도 된다), 앞에서부터 자신과 겹치는 통나무를 같은 그룹으로 합친다. 다음 통나무가 겹치지 않는다면 탐색을 종료한다.
그 다음 통나무부터는 다른 그룹으로 합치면 된다.

오랜만에 풀어서 그런지 구현할 때 약간 버벅였다;;
'Problem Solving > BOJ' 카테고리의 다른 글
| 1022. 소용돌이 예쁘게 출력하기 (0) | 2024.02.01 |
|---|---|
| 12920. 평범한 배낭 2 (1) | 2023.07.30 |
| 26607. 시로코와 은행털기 (0) | 2023.07.29 |
| 2094. 강수량 (0) | 2023.06.14 |
| 14922. 부분평균 (0) | 2023.05.02 |
Comments