풀이 방법
먼저 주어진 문자열을 나눠서 시간을 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;
}
}
'코딩테스트 > [프로그래머스] 코딩테스트 연습' 카테고리의 다른 글
가장 먼 노드 (0) | 2021.10.22 |
---|---|
순위 (0) | 2021.10.22 |
아이템 줍기 (0) | 2021.10.20 |
교점에 별 만들기 (0) | 2021.10.17 |
뉴스 클러스터링 (0) | 2021.10.08 |