https://programmers.co.kr/learn/courses/30/lessons/17678
๋ฌธ์ ์ค๋ช
์นด์นด์ค์์๋ ๋ฌด๋ฃ ์ ํ๋ฒ์ค๋ฅผ ์ดํํ๊ธฐ ๋๋ฌธ์ ํ๊ต์ญ์์ ํธํ๊ฒ ์ฌ๋ฌด์ค๋ก ์ฌ ์ ์๋ค. ์นด์นด์ค์ ์ง์์ ์๋ก๋ฅผ 'ํฌ๋ฃจ'๋ผ๊ณ ๋ถ๋ฅด๋๋ฐ, ์์นจ๋ง๋ค ๋ง์ ํฌ๋ฃจ๋ค์ด ์ด ์ ํ์ ์ด์ฉํ์ฌ ์ถ๊ทผํ๋ค.
์ด ๋ฌธ์ ์์๋ ํธ์๋ฅผ ์ํด ์ ํ์ ๋ค์๊ณผ ๊ฐ์ ๊ท์น์ผ๋ก ์ดํํ๋ค๊ณ ๊ฐ์ ํ์.
- ์ ํ์ 09:00๋ถํฐ ์ด nํ t๋ถ ๊ฐ๊ฒฉ์ผ๋ก ์ญ์ ๋์ฐฉํ๋ฉฐ, ํ๋์ ์ ํ์๋ ์ต๋ m๋ช ์ ์น๊ฐ์ด ํ ์ ์๋ค.
- ์ ํ์ ๋์ฐฉํ์ ๋ ๋์ฐฉํ ์๊ฐ์ ๋๊ธฐ์ด์ ์ ํฌ๋ฃจ๊น์ง ํฌํจํด์ ๋๊ธฐ ์์๋๋ก ํ์ฐ๊ณ ๋ฐ๋ก ์ถ๋ฐํ๋ค. ์๋ฅผ ๋ค์ด 09:00์ ๋์ฐฉํ ์ ํ์ ์๋ฆฌ๊ฐ ์๋ค๋ฉด 09:00์ ์ค์ ์ ํฌ๋ฃจ๋ ํ ์ ์๋ค.
์ผ์ฐ ๋์์ ์ ํ์ ๊ธฐ๋ค๋ฆฌ๋ ๊ฒ์ด ๊ท์ฐฎ์๋ ์ฝ์, ์ผ์ฃผ์ผ๊ฐ์ ์ง์ํ ๊ด์ฐฐ ๋์ ์ด๋ค ํฌ๋ฃจ๊ฐ ๋ช ์์ ์ ํ ๋๊ธฐ์ด์ ๋์ฐฉํ๋์ง ์์๋๋ค. ์ฝ์ด ์ ํ์ ํ๊ณ ์ฌ๋ฌด์ค๋ก ๊ฐ ์ ์๋ ๋์ฐฉ ์๊ฐ ์ค ์ ์ผ ๋ฆ์ ์๊ฐ์ ๊ตฌํ์ฌ๋ผ.
๋จ, ์ฝ์ ๊ฒ์ผ๋ฅด๊ธฐ ๋๋ฌธ์ ๊ฐ์ ์๊ฐ์ ๋์ฐฉํ ํฌ๋ฃจ ์ค ๋๊ธฐ์ด์์ ์ ์ผ ๋ค์ ์ ๋ค. ๋ํ, ๋ชจ๋ ํฌ๋ฃจ๋ ์ ์ ์์ผ ํ๋ฏ๋ก 23:59์ ์ง์ ๋์๊ฐ๋ค. ๋ฐ๋ผ์ ์ด๋ค ํฌ๋ฃจ๋ ๋ค์๋ ์ ํ์ ํ๋ ์ผ์ ์๋ค.
์ ๋ ฅ ํ์
์ ํ ์ดํ ํ์ n, ์ ํ ์ดํ ๊ฐ๊ฒฉ t, ํ ์ ํ์ ํ ์ ์๋ ์ต๋ ํฌ๋ฃจ ์ m, ํฌ๋ฃจ๊ฐ ๋๊ธฐ์ด์ ๋์ฐฉํ๋ ์๊ฐ์ ๋ชจ์ ๋ฐฐ์ด timetable์ด ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ค.
- 0 ๏ผ n โฆ 10
- 0 ๏ผ t โฆ 60
- 0 ๏ผ m โฆ 45
- timetable์ ์ต์ ๊ธธ์ด 1์ด๊ณ ์ต๋ ๊ธธ์ด 2000์ธ ๋ฐฐ์ด๋ก, ํ๋ฃจ ๋์ ํฌ๋ฃจ๊ฐ ๋๊ธฐ์ด์ ๋์ฐฉํ๋ ์๊ฐ์ด HH:MM ํ์์ผ๋ก ์ด๋ฃจ์ด์ ธ ์๋ค.
- ํฌ๋ฃจ์ ๋์ฐฉ ์๊ฐ HH:MM์ 00:01์์ 23:59 ์ฌ์ด์ด๋ค.
์ถ๋ ฅ ํ์
์ฝ์ด ๋ฌด์ฌํ ์ ํ์ ํ๊ณ ์ฌ๋ฌด์ค๋ก ๊ฐ ์ ์๋ ์ ์ผ ๋ฆ์ ๋์ฐฉ ์๊ฐ์ ์ถ๋ ฅํ๋ค. ๋์ฐฉ ์๊ฐ์ HH:MM ํ์์ด๋ฉฐ, 00:00์์ 23:59 ์ฌ์ด์ ๊ฐ์ด ๋ ์ ์๋ค.
ํ์ด
- ํฌ๋ฃจ๋ค์ ๋์ฐฉ ์๊ฐ์ hour * 60 + minute ์ผ๋ก ๋ณํํ์ฌ ์ค๋ฆ์ฐจ์์ผ๋ก PriorityQueue์ ์ ์ฅ
- ์ฒ์ ๋ฒ์ค ๋์ฐฉ ์๊ฐ ( busTime) ์ 9์ (9*60 = 540) ์ผ๋ก ์ง์
- ์
ํ ์ดํ ํ์์ธ n๋ฒ ๋์ ์งํ
- ๋ง์ฝ ์ ์ผ ์ผ์ฐ ๋์ฐฉํ ์๊ฐ์ด busTime ๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ผ๋ฉด people ์ฆ๊ฐ
- ํฌ๊ฑฐ๋ ํ์น ๊ฐ๋ฅํ ์ธ์์ด ๋ค์ฐจ๋ฉด break
- ์ ํ์ด ํ ๋ฒ ์ดํํ ๋๋ง๋ค ์ฝ์ ์๊ฐ์ ๋ง์ง๋ง ํ์น ํฌ๋ฃจ์ -1
- ๋ชจ๋ ์ ํ์ด ์ดํ์ด ์ข ๋ฃ๋๊ณ , ๋ง์ง๋ง ์ ํ์ ํ์น ์ธ์์ด ์ต๋ ์ธ์ m๋ณด๋ค ์์ผ๋ฉด ์ฝ์ ์๊ฐ์ ๋ง์ง๋ง ๋์ฐฉ ์๊ฐ
์ฝ๋
import java.util.LinkedList;
import java.util.PriorityQueue;
import java.util.Queue;
public class ์
ํ๊ท์น {
static PriorityQueue<Integer> q = new PriorityQueue<>();
static int answer = 0;
public static String solution(int n, int t, int m, String[] timetable) {
for(int i = 0 ; i < timetable.length; i++){
String[] s = timetable[i].split(":");
int time = Integer.parseInt(s[0])*60 + Integer.parseInt(s[1]);
q.add(time);
}
int busTime = 9*60;
int people = 0;
for(int i = 0 ; i < n ; i++){
// ํ์นํ ์ธ์
people = 0;
while(!q.isEmpty()){
int boardingTime = q.poll();
if(boardingTime <= busTime && people < m){
people++;
}
else{
q.add(boardingTime);
break;
}
answer = boardingTime - 1;
}
// ๋ค์ ๋ฒ์ค ์๊ฐ
busTime += t;
}
if(people < m){
answer = busTime-t;
}
String hour = String.format("%02d", answer/60);
String minute = String.format("%02d", answer%60);
return hour+":"+minute;
}
public static void main(String[] args) {
String[] timetable = {"23:59","23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59", "23:59"};
System.out.println(solution(10, 60, 45, timetable));
}
}
'์๊ณ ๋ฆฌ์ฆ > ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ๋ณด์ ์ผํ (0) | 2021.09.23 |
---|---|
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ํ ํธ์ง (0) | 2021.09.23 |
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ๋ค๋จ๊ณ ์นซ์ ํ๋งค (0) | 2021.09.20 |
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ์์ (0) | 2021.09.16 |
[ ํ๋ก๊ทธ๋๋จธ์ค / Programmers Level 3 ] ๋คํธ์ํฌ (0) | 2021.09.15 |