[프로그래머스] 카카오_추석 트래픽 (자바 풀이)
- 알고리즘 문제 해결(PS)/[프로그래머스]
- 2022. 1. 25.
문제
https://programmers.co.kr/learn/courses/30/lessons/17676?language=java
풀이
이 문제는 String 처리를 잘 해야한다. 나는 자바의 라이브러리들을 이용해 주어진 형식에 맞춰 적절히 parsing 하였다. 이를 통해 요청시간과 요청 마감 시간을 Pair라는 클래스로 저장하였다. 그리고 요청시간과 요청 마감 시간 두 개를 기준으로 1초간 몇개의 응답이 있는지 count 해주는 방법을 택했다.
코드
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 | import java.util.*; class Solution { public int solution(String[] lines) { int answer = 0; Pair arr[] = new Pair[lines.length]; for(int i=0; i<lines.length; i++){ arr[i] = str2time(lines[i]); } for(int i=0; i<arr.length; i++){ answer = Math.max(answer, count(arr[i].start, arr, i)); answer = Math.max(answer, count(arr[i].end, arr, i)); } return answer; } static int count(int start, Pair[] arr, int i){ int end = start + 1000; int cnt = 1; for(int j=0; j<arr.length; j++){ if(i==j) continue; if( arr[j].end < start || arr[j].start >= end ) continue; cnt++; } return cnt; } static Pair str2time(String str){ String[] temp = str.split(" "); String[] tmp = temp[1].split(":"); int hour = Integer.parseInt(tmp[0])*60*60*1000; int min = Integer.parseInt(tmp[1])*60*1000; int sec = Integer.parseInt(tmp[2].substring(0,2))*1000 + Integer.parseInt(tmp[2].substring(3,6)); int calTime = 0; if(temp[2].length()> 2){ calTime = Integer.parseInt(temp[2].substring(0,1))*1000 + Integer.parseInt(temp[2].substring(2,temp[2].length()-1)); }else{ calTime = Integer.parseInt(temp[2].substring(0,1))*1000; } int end = hour+min+sec; int start = end - calTime +1; return new Pair(start, end); } static class Pair{ int start; int end; Pair(int a, int b){ this.start = a; this.end = b; } } } | cs |
결과
반응형
'알고리즘 문제 해결(PS) > [프로그래머스]' 카테고리의 다른 글
[프로그래머스] 카카오_압축 (자바 풀이) (0) | 2022.02.14 |
---|---|
[프로그래머스] 카카오_방금그곡 (자바 풀이) (0) | 2022.02.14 |
[프로그래머스] 카카오_셔틀버스 (자바 풀이) (0) | 2022.01.25 |
[프로그래머스] 카카오_뉴스 클러스터링 (자바 풀이) (0) | 2022.01.25 |
[프로그래머스] 카카오_프렌즈4블록 (자바 풀이) (0) | 2022.01.24 |