https://school.programmers.co.kr/learn/courses/30/lessons/155651
๋ฌธ์
- ์ต์ํ์ ๊ฐ์ค๋ง์ ์ฌ์ฉํ์ฌ ์์ฝ ์๋๋ค์ ๋ฐ์.
- ํ ๋ฒ ์ฌ์ฉํ ๊ฐ์ค์ ํด์ค ์๊ฐ์ ๊ธฐ์ค์ผ๋ก 10๋ถ๊ฐ ์ฒญ์๋ฅผ ํ๊ณ ๋ค์ ์๋๋ค์ด ์ฌ์ฉํ ์ ์์.
- ํ์ํ ์ต์ ๊ฐ์ค์ ์ ๊ตฌํ๊ธฐ
- 1 ≤ book_time์ ๊ธธ์ด ≤ 1,000
- book_time[i]๋ ["HH:MM", "HH:MM"]์ ํํ๋ก ์ด๋ฃจ์ด์ง ๋ฐฐ์ด
์ ์ถ๋ ฅ ์์
- ์ ๋ ฅ : book_time [["15:00", "17:00"], ["16:40", "18:20"], ["14:20", "15:20"], ["14:10", "19:20"], ["18:20", "21:20"]]
- ์ถ๋ ฅ : 3
ํ์ด
๊ทธ๋ฆฌ๋ํ ๋ฐฉ๋ฒ์ผ๋ก ํ์ด์ผ ํ๋ ๋ฌธ์ ์ด๋ค. ์์ ์๊ฐ์ด ๋น ๋ฅธ ๊ฒ๋ถํฐ ์ฐจ๋ก๋ก ๋ฐฉ์ ๋ฃ์ด์ผ ํ๋ค.
์ ๋ ๊ฒ ์์ ์๊ฐ๊ณผ ๋๋๋ ์๊ฐ์ด ์ฃผ์ด์ง๊ณ ์ต๋๊ฐ์ด๋ ์ต์๊ฐ์ ๊ตฌํ๋ ๋ฌธ์ ์ ํ์ผ๋ก ํ์์ค ๋ฌธ์ ๊ฐ ์ ๋ช ํ๋ค.
๋ฐฑ์ค - ํ์์ค ๋ฐฐ์ (https://www.acmicpc.net/problem/1931)
ํ๋ก๊ทธ๋๋จธ์ค - ์๊ฒฉ ์์คํ (https://school.programmers.co.kr/learn/courses/30/lessons/181188)
'ํธํ ๋์ค' ๋ฌธ์ ๋ ํ์์ค ๋ฌธ์ ์ ํ์ด๊ฐ ๋น์ทํ๋ ๋ ์๊ฐํด์ผ ๋ ๋ถ๋ถ์ด ์์๋ค.
- String("HH:MM") ํํ์ ๊ฐ์ ๋ถ ๋จ์(int)๋ก ๋ฐ๊พธ๊ธฐ
- timeToInt ํจ์ : ":"๋ฅผ ๊ธฐ์ค์ผ๋ก ์๊ฐ๊ณผ ๋ถ์ ๋๋๊ณ , ๋ถ์ผ๋ก ์ฐ์ฐํด ๋ฆฌํด
- ์์ ์๊ฐ์ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌํ๊ธฐ
- ์์ฝ์ ์์ ์๊ฐ์ ๋ง์ถฐ ์ฐจ๋ก๋๋ก ๋ฐฉ์ ๋ฐฐ์ ํ ๊ฒ์ด๋ค.
- ์ต์ํ(์ฐ์ ์์ ํ) ์ฌ์ฉ
- ์ต์์ ๋ฐฉ์ ์ฐ๋ ค๋ฉด, ์๋ก์ด ์์ฝ ์๊ฐ์ ๋ฐฉ์ ๋ฐฐ์ ํ ๋ ์์ฝ์ด ๋นจ๋ฆฌ ๋๋๋ ๋ฐฉ์ ์ฐพ์ ๋น๊ต๋ฅผ ํด์ผ ํ๋ค. ํ์ ๋์ค ์ค์ธ ์์ฝ๋ค์ ๋ฃ๊ณ , ์ต์ํ์ผ๋ก ์ ๋ ฌ์ ํด front์ ๋นจ๋ฆฌ ๋๋๋ ์๊ฐ์ด ๋์ค๋๋ก ํ๋ค.
- ์์ฝ์ด ๋นจ๋ฆฌ ๋๋๋ ๋ฐฉ์ ์ข
๋ฃ ์๊ฐ + 10(์ฒญ์์๊ฐ)์ ๊ธฐ์ค์ผ๋ก ์๋ก์ด ์์ฝ ์๊ฐ์ด
- ๋ค์ ์๋ค๋ฉด, ์๋ก ๋ฐฉ์ ๋ฐฐ์ ํ ํ์๊ฐ ์๋ค. (์ด์ ์ ์์ฝ์ ๋์ค ์ค์ธ ํ์์ ์ ๊ฑฐํด์ค๋ค.)
- ์์ ์๋ค๋ฉด, ์๊ฐ์ด ๊ฒน์น๋ฏ๋ก ์๋ก ๋ฐฉ์ ๋ฐฐ์ ํด์ผ ํ๋ค. (์ ๋ต ์นด์ดํธ๋ฅผ ๋๋ฆฐ๋ค)
- ๋์ค ์ค์ธ ํ์ ๋ฃ๋๋ค.
์ฝ๋
import java.util.*;
class Solution {
public int solution(String[][] book_time) {
//๋ถ๋จ์๋ก ๋ฐ๊พธ๊ธฐ
int[][] times = new int[book_time.length][2];
for(int i = 0; i < book_time.length; i++) {
for(int j = 0; j < 2; j++) {
times[i][j] = timeToInt(book_time[i][j]);
}
}
//์์ ์๊ฐ ๊ธฐ์ค์ผ๋ก ์ค๋ฆ์ฐจ์ ์ ๋ ฌ
Arrays.sort(times, (o1, o2) -> o1[0] == o2[0] ? o1[1] - o2[1] : o1[0] - o2[0]);
//๋๋๋ ์๊ฐ + 10(์ฒญ์์๊ฐ) > ๋ค์ ์์ ์๊ฐ -> ์๋ก์ด ๋ฐฉ
int answer = 1;
PriorityQueue<Integer> queue = new PriorityQueue<>(); //๋์ค ์ค
queue.add(times[0][1]);
for(int i = 1; i < times.length; i++) {
if(queue.peek() + 10 > times[i][0]) {
answer++;
} else {
queue.remove();
}
queue.add(times[i][1]);
}
return answer;
}
public int timeToInt(String time) {
String[] str = time.split(":");
return 60 * Integer.parseInt(str[0]) + Integer.parseInt(str[1]);
}
}
๊ฒฐ๊ณผ
๋ฐฐ์ด์
- ์ต์ ํ(์ฐ์ ์์ ํ) ์ฌ์ฉ
'Algorithm > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ํ๋ก๊ทธ๋๋จธ์ค - ์คํฌํธ๋ฆฌ (0) | 2023.08.17 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค - n์ง์ ๊ฒ์ (0) | 2023.08.17 |
ํ๋ก๊ทธ๋๋จธ์ค - ์ฃผ์ ๊ฐ๊ฒฉ (0) | 2023.08.03 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ฏธ๋ก ํ์ถ (0) | 2023.08.02 |
ํ๋ก๊ทธ๋๋จธ์ค - ๋ํ์ค ๊ฒ์ (0) | 2023.07.27 |