티스토리 뷰
반응형
https://programmers.co.kr/learn/courses/30/lessons/17676
코딩테스트 연습 - [1차] 추석 트래픽
입력: [ "2016-09-15 20:59:57.421 0.351s", "2016-09-15 20:59:58.233 1.181s", "2016-09-15 20:59:58.299 0.8s", "2016-09-15 20:59:58.688 1.041s", "2016-09-15 20:59:59.591 1.412s", "2016-09-15 21:00:00.464 1.466s", "2016-09-15 21:00:00.741 1.581s", "2016-09-1
programmers.co.kr
옜날에 C++ 로 풀었었는데 다시 한번 JAVA로 풀어봤다.
풀이 방법은 매우 심플하다. 왜 LV3 인지 잘 모르겠는 문제...
1. 시작시간이랑 끝시간을 구한다.
2. 끝시간 기준 정렬 되있으니까 1초 포함관계를 구하기 위해서는 다음의 것들만 체크하면된다.
-1) 직전 꺼 끝시간 기준 다음꺼가 걸쳐있는지
-2) 직전 꺼 끝시간 - 1초 사이에 다음꺼가 끝나는지
-3) 직전 꺼 끝시간 + 1초 사이에 다음꺼가 시작되는지
import java.util.*;
import java.text.SimpleDateFormat;
class Solution {
class Point{
long start, end;
Point(long st,long ed){
start = st;
end =ed;
}
}
public int solution(String[] lines) {
int answer = 0;
try{
ArrayList<Point> arr = new ArrayList<>();
for (int i=0; i<lines.length; i++) {
String[] items = lines[i].split(" ");
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
Date date = sdf.parse(items[0]+" "+items[1]);
long end = date.getTime();
long start = end+1-(long)((Double.parseDouble(items[2].substring(0,items[2].length()-1)) * 1000));
arr.add(new Point(start, end));
}
for (int i=0; i<arr.size(); i++ ){
long iend = arr.get(i).end;
int cnt =1;
for (int j=i+1; j<arr.size(); j++){
if(iend >= arr.get(j).start && iend <= arr.get(j).end ||
iend >= arr.get(j).start && iend-999 <= arr.get(j).end ||
iend + 999 >= arr.get(j).start) cnt++;
}
answer = answer < cnt ? cnt : answer;
}
}catch(Exception e) {}
return answer;
}
}반응형
'알고리즘' 카테고리의 다른 글
| [프로그래머스] 동굴탐험 (1) | 2022.04.23 |
|---|---|
| [프로그래머스] 경주로건설 (0) | 2022.04.23 |
| k진수에서 소수 개수 구하기 (0) | 2022.03.15 |
| 백준 7576 - 토마토 (1) | 2022.03.10 |
| [프로그래머스] N으로 표현 (1) | 2021.12.28 |