헝D의 일기장

https://school.programmers.co.kr/learn/courses/30/lessons/155651

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 나의풀이

import java.util.*;
class Solution {
    public int solution(String[][] book_time) {
        int answer = 0;
        List<Integer[]> list = new ArrayList<>();
        
        //시작시간이 빠른 순으로 정렬
        Arrays.sort(book_time, (o1, o2) -> 
                    o1[0].equals(o2[0]) ? 
                    o1[1].replace(":","").compareTo(o2[1].replace(":","")) :
                    o1[0].replace(":","").compareTo(o2[0].replace(":",""))
                   );
        
        for(String[] temp:book_time){
            int start =Integer.valueOf(temp[0].split(":")[0]) * 60 + Integer.valueOf(temp[0].split(":")[1]);
            int end =Integer.valueOf(temp[1].split(":")[0]) * 60 + Integer.valueOf(temp[1].split(":")[1]);

            for(Integer[] li: list){
                if(li[1]+10 <= start){
                    list.remove(list.indexOf(li)); //기존 객실 삭제
                    break;
                }
            }
            list.add(new Integer[]{start, end}); //새로운 객실로 등록 

        }
        answer = list.size();                       
        return answer;
    }
}

 

놓칠 수 있는 포인트

객실 시간 문자열을 그대로 int형으로 변환해버리면 00시 XX분인 케이스에서 실패하기 때문에 유의! 

profile

헝D의 일기장

@헝D

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!