백준 1911번 문제 정렬후 현재 위치를 갱신해가면서 찾을 수도 있지 않나요?
저는 물웅덩이가 시작되는 위치를 기준으로 정렬을 한 뒤에 현재 위치를 0으로 잡고 만약 물웅덩이가 시작되는 위치가 현재 위치보다 크다면 현재 위치는 물웅덩이 위치로 한뒤 현재 위치 = 현재 위치 + 널빤지 위치, 만약 현재 위치가 물웅덩이가 시작되는 위치보다 크고 물웅덩이가 끝나는 위치보다 작은 경우 현재 위치 = 현재 위치 + 널빤지 위치.
이런식으로 현재 위치를 갱신해가면서 답을 구했는데 이 접근법은 이 문제에서만 유효한가요?
아래는 자바 코드 입니다.
package _5thweek;
import java.util.PriorityQueue;
import java.util.Scanner;
public class Baekjoon1911 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int l = sc.nextInt();
PriorityQueue<int[]> pq = new PriorityQueue<>((a, b) -> {
if (a[0] > b[0]) {
return 1;
} else if (a[0] < b[0]) {
return -1;
}
return 0;
});
for (int i = 0; i < n; i++) {
int start = sc.nextInt();
int finish = sc.nextInt();
pq.add(new int[]{start, finish});
}
int ans = 0;
int cur = 0;
while (!pq.isEmpty()) {
int[] poll = pq.poll();
int start = poll[0];
int end = poll[1];
while (cur < end) {
if (cur < start) {
cur = start;
}
ans += 1;
cur += l;
}
}
System.out.println(ans);
}
}
답변 1
0
안녕하세요 예비군님 ㅎㅎ
자바말고 C++로 질문부탁드립니다.
시작되는 위치가 현재 위치보다 크다면 현재 위치는 물웅덩이 위치로 한뒤 현재 위치 = 현재 위치 + 널빤지 위치, 만약 현재 위치가 물웅덩이가 시작되는 위치보다 크고 물웅덩이가 끝나는 위치보다 작은 경우 현재 위치 = 현재 위치 + 널빤지 위치.
=> 넵 로직은 괜찮아 보입니다. ㅎㅎ 또한, 이문제와 유사한 문제라면 충분히 예비군님이 생각하신 로직으로도 처음에 접근해볼만하다고 생각합니다.
감사합니다.
코딩 살구클럽 가입 문의
0
59
2
코딩살구클럽 가입문의
0
65
2
3-K private case 질문
0
59
2
안녕하세요. 코딩살구클럽 문의드립니다!
0
75
2
7:41 듣다가 질문합니다
0
70
2
코드 리뷰 요청드립니다!
0
76
2
코딩살구클럽 계정 문의
0
75
2
SK하이닉스 대비 강의수강
0
207
3
코딩살구클럽 등록부탁드립니다.
0
75
2
7-F 재귀로 풀시 런타임애러
0
69
1
1-N 문제 질문입니다. (+ 채점오류)
0
82
2
코딩살구클럽 가입 확인 부탁드립니다.
0
86
2
직장인 코테 합격 공부방법 문의
0
117
2
코딩살구클럽 가입 방법
0
91
2
6-H 체점 관련 질문
0
74
1
채점서버 연결 관련 질문입니다
0
99
2
삼성 s직군
0
88
1
삼성 코테 없어짐
0
209
1
코딩살구클럽 가입부탁드립니다
0
87
2
코딩살구클럽 가입 요청 확인부탁드립니다
0
67
2
5-S 테스트 케이스 질문
0
74
2
코살 문제풀이 환경
0
85
2
2 - T 오큰수 문제가 있는 것 같습니다.
0
77
1
추천 추가문제들
0
71
2





