코딩테스트/[프로그래머스] 코딩테스트 연습
추석 트래픽
쵼쥬
2021. 10. 21. 23:50
풀이 방법
먼저 주어진 문자열을 나눠서 시간을 int로 나타내서 계산해주었다.
각 범위를 계산해 주기 위해 변화가 있는 로그가 시작하고 끝나는 모든 지점에서 1초 범위로 속하는 로그들의 개수를 세어주었다.
범위에 속하기 위해
- 시작점이 범위 안에 들어 있는 경우
- 끝나는 지점이 범위 안에 들어 있는 경우
- 시작점과 끝나는 지점이 범위보다 클 경우
이 세가지 경우를 생각해서 count해 주었다.
내 코드
import java.util.*;
class Solution {
public int solution(String[] lines) {
int[][] array = new int[lines.length][2];
for(int i = 0 ; i < lines.length; i++){
double x = 60 * 60 * Integer.parseInt(lines[i].substring(11, 13)) + 60 * Integer.parseInt(lines[i].substring(14, 16)) + Integer.parseInt(lines[i].substring(17, 19)) + Double.parseDouble("0." + lines[i].substring(20, 23));
double y = Double.parseDouble(lines[i].substring(24, lines[i].length()-1));
array[i][0] = (int)(1000 * x - 1000 * y + 1);
array[i][1] = (int)(1000 * x);
if(array[i][0] < 0)
array[i][0] = 0;
}
int max = 0;
for(int i = 0 ; i < array.length; i++){
for(int k = 0; k< 2; k++){
int count = 0;
for(int j = 0; j < array.length; j++){
if(array[i][k] <= array[j][0] && array[i][k] + 999 >= array[j][0]
|| array[i][k] + 999 >= array[j][1] && array[j][1] >= array[i][k]
|| array[i][k] >= array[j][0] && array[i][k] + 999 <= array[j][1])
count++;
}
max = Math.max(max, count);
}
}
return max;
}
}