📍 문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/17678
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
💡 접근
일단 탈 수 있는 사람들 태우고 콘이 탈 수 있는 시간을 끝까지 갱신해주면 된다.
제일 늦게 도착할 수 있는 시간을 자리 있을 경우/없을 경우로 나누었다.
1.자리가 있으면 셔틀 출발 시간에 딱 맞춰가서 탄다.
2.자리가 없으면 마지막 사람 1분 전에 가서 탄다.
👩💻 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
public String solution(int n, int t, int m, String[] timetable) {
String answer = "";
ArrayList<Integer> list = new ArrayList<>();
for(String tt : timetable) {
String[] split = tt.split(":");
int hour = Integer.parseInt(split[0]) * 60;
int minute = Integer.parseInt(split[1]);
list.add(hour + minute);
}
Collections.sort(list);
//운행 시작
for(int i = 0; i < n; i++) {
int start = 540 + (i * t);
int cnt = m;
int target = 0;
ListIterator<Integer> iter = list.listIterator();
//태울 수 있는 사람 확인
while(iter.hasNext() && cnt != 0) {
target = iter.next();
if(start >= target) {
iter.remove();
cnt--;
}
}
//자리 비어있으면 셔틀 출발 시간에 가도 됨
String hour;
String minute;
if(cnt > 0) {
hour = String.format("%02d", start / 60);
minute = String.format("%02d", start % 60);
}
//다 태웠으면 콘은 마지막 사람 1분 전에 가야함
else {
hour = String.format("%02d", (target - 1) / 60);
minute = String.format("%02d", (target - 1) % 60);
}
answer = hour+":"+minute;
}
return answer;
}
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
Main main = new Main();
int n = 10;
int t = 60;
int m = 45;
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"};
main.solution(n, t, m, timetable);
}
}
'Algorithm > programmers' 카테고리의 다른 글
[2020 카카오 인턴십]보석 쇼핑 (0) | 2022.07.14 |
---|---|
[2021 카카오 인턴십]표 편집 (0) | 2022.07.14 |
[2018 카카오 블라인드 1차]추석트래픽 (0) | 2022.07.07 |
[2022 카카오 블라인드]양궁 대회★ (0) | 2022.07.06 |
[2018 카카오 블라인드 3차]파일명 정렬 (0) | 2022.07.06 |