π λ¬Έμ
π μμ΄λμ΄
μ΅λν μ μ κ°μμ€μ μ¬μ©νμ¬ λͺ¨λ μμ μ ν μ μλλ‘ νλ λ¬Έμ μ λλ€.
μ²μ λ¬Έμ λ₯Ό μ½μμλλ 그리λ λ¬Έμ λ‘ μκ°νκ³ λμκ°μ κΈ°μ€μΌλ‘ μ λ ¬νκ³ λͺ¨λ κ²½μ°λ₯Ό νμΈνμμΌλ κ·Έλ κ² νλ©΄ μκ° μ΄κ³Όκ° λ°μν©λλ€.
λ€λ₯Έ λ¬Έμ νμ΄λ°©λ²μ κ°μλ₯Ό μ λ ₯λ°λ κ²½μ° μμμκ°, λ μκ°μ ꡬλΆνμ¬ μ λ ₯λ°κ³ μμμκ°μΈ κ²½μ°μλ νμν κ°μμ€μ΄ νλ μ¦κ°, λ μκ°μΈ κ²½μ°λ νμν κ°μμ€μ΄ νλ κ°μνλλ‘ νμ¬ ν μμ μ μ΅λ λͺκ°μ κ°μμ€μ΄ νμνμ§ μΈλ©΄ λ©λλ€. (λμκ°μ νμν μ΅λ νμμ€ κ°μμ λλ€)
μ λ ¬μμλ μκ°μ κΈ°μ€μΌλ‘ μ λ ¬νμ§λ§ κ°μκ° λλ κ°μμ€μ λ¨Όμ - νκ³ κ·Έ λ€μμ μμνλ κ°μμ€μ + ν μ μλλ‘ νκΈ° μν΄μ μ λ ¬ 쑰건μμ λ§μ½ μκ°μ΄ κ°μ κ²½μ° λλλ κ²½μ°κ° λ¨Όμ λ¦¬ν΄ λ μ μλλ‘ νμμ΅λλ€.
λ§μ½ μμ μ λ ¬μ‘°κ±΄μ νμ§ μμ κ²½μ° μλμ κ°μ μ λ ₯μ΄ μλ€λ©΄
4
1 1 2
2 2 3
1 1 2
2 2 3
κ° νμ λ€μ΄κ°λ©΄ μλμ κ°μ΄ μ λ ¬λ μ λ μμ΅λλ€.
Lecture{time=1, isStart=true}
Lecture{time=1, isStart=true}
Lecture{time=2, isStart=true}
Lecture{time=2, isStart=false}
Lecture{time=2, isStart=false}
Lecture{time=2, isStart=true}
Lecture{time=3, isStart=false}
Lecture{time=3, isStart=false}
λ¨Όμ λλ¬μμ μ΄λΌκ³ νλ¨ λκ²μ μ²λ¦¬νμ§ μμ νμν κ°μμ€μ΄ 3κ°λ‘ μΆλ ₯λ©λλ€.
λ°λΌμ λ¨Όμ λλλ κ²½μ°λ₯Ό μ²λ¦¬ν΄μ€ μ΄νμ μμνλ κ²½μ°λ₯Ό μ²λ¦¬ν΄μ£ΌκΈ° μν΄ μ λ ¬μ‘°κ±΄μ μΆκ°λ‘ λ£μ΄μ μ§νν΄μΌ ν©λλ€.
μ λ ¬ μ‘°κ±΄μ΄ μΆκ°λ μ΄νμλ 2κ°μ κ°μμ€μ΄ νμνλ€κ³ μΆλ ₯λ©λλ€.
π νμ΄
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Boj_1374_κ°μμ€ {
private static class Lecture implements Comparable<Lecture> {
int time;
boolean isStart;
public Lecture(int time, boolean isStart) {
this.time = time;
this.isStart = isStart;
}
@Override
public int compareTo(Lecture other) {
if (this.time == other.time) {
if(!this.isStart) return -1; //λ -> μμμμΌλ‘ μ§ν νλλ‘ νκΈ° μν΄μ
return 1;
}
return time - other.time;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
PriorityQueue<Lecture> all = new PriorityQueue<>();
while (n-- > 0) {
st = new StringTokenizer(br.readLine());
st.nextToken();
all.add(new Lecture(Integer.parseInt(st.nextToken()), true)); //μμ
all.add(new Lecture(Integer.parseInt(st.nextToken()), false)); //λ
}
int classCnt = 0;
int minClassCnt = 0;
while (!all.isEmpty()) {
Lecture lecture = all.poll();
if (lecture.isStart) {
classCnt++; //μμ μμ
μ΄λ€ ( κ°μμ€μ΄ νλ λ νμνλ€)
} else {
classCnt--; //λλλ μμ
μ΄λ€ (κ°μμ€ νλ μ΄μ μ νμνλ€)
}
minClassCnt = Math.max(classCnt, minClassCnt);
}
System.out.println(minClassCnt);
}
}
λν μ΄λ¬Έμ λ μ°μ μμ νλ₯Ό μ΄μ©ν΄μλ μλμ κ°μ΄ νμ΄ ν μ μμ΅λλ€.
(μμ μ μ¬ν νμ΄μ§λ§ μ°μ μμ νλ₯Ό μ΄μ©νμ¬ λμκ°μ λͺκ°μ μμ μ΄ μλμ§ νμΈν©λλ€)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.PriorityQueue;
import java.util.StringTokenizer;
public class Boj_1374_κ°μμ€_pq {
private static class Lecture implements Comparable<Lecture> {
int start;
int end;
public Lecture(int start, int end) {
this.start = start;
this.end = end;
}
@Override
public int compareTo(Lecture other) {
return start - other.start;
}
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
int n = Integer.parseInt(br.readLine());
PriorityQueue<Lecture> lectures = new PriorityQueue<>();
while (n-- > 0) {
st = new StringTokenizer(br.readLine());
st.nextToken();
lectures.add(new Lecture(Integer.parseInt(st.nextToken()), Integer.parseInt(st.nextToken())));
}
int minClassCnt = 0;
PriorityQueue<Integer> currentLectures = new PriorityQueue<>(); //λλλ μκ°λ§ λ£λλ€.
while (!lectures.isEmpty()) {
Lecture lecture = lectures.poll();
//ν΄λΉ μμ
μκ° μ μ λλ μμ
μ΄ μμΌλ©΄ λΊλ€.
while (!currentLectures.isEmpty() && currentLectures.peek() <= lecture.start) {
currentLectures.poll();
}
//μμμκ°μ΄ κ°μ μμ
μ΄ μλ€λ©΄ λ£λλ€.
currentLectures.add(lecture.end);
while (!lectures.isEmpty() && lectures.peek().start == lecture.start) {
currentLectures.add(lectures.poll().end);
}
//νμ¬ νμ μ¬μ΄μ¦κ° νμ¬ μκ°μ νμν νμμ€μ μ μ΄λ€.
minClassCnt = Math.max(currentLectures.size(), minClassCnt);
}
System.out.println(minClassCnt);
}
}
'λ°±μ€(boj)' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[JAVA]λ°±μ€ 13335 νΈλ Deque, queue (0) | 2023.07.31 |
---|---|
[JAVA]18869 λ©ν°λ²μ€2 , μ’νμμΆ (0) | 2023.07.28 |
[JAVA]3109 λΉ΅μ§ (0) | 2023.07.12 |
[JAVA]1802 μ’ μ΄μ κΈ° λΆν μ 볡 (0) | 2023.07.12 |
[JAVA]17829 222 νλ§ - λΆν μ 볡 (0) | 2023.07.12 |