강의로 돌아가기
배인성

테케 8번 19번 틀리는 사람은 저밖에 없네요... 도와주세요 ㅠㅠ (해결)

저 두 가지 테스트케이스가 진짜 너무 궁금해서 미칠거같아요
이거 두개 말고는 다 맞는거보면 로직 자체가 잘못된거같진않고 ㅠ
카카오 문제는 그냥 재미로만 풀어야겠어요 코테가봤자 이런 한두가지 케이스로 못풀게 뻔한데 ㅠㅠ

저는 string에 진작에 1000을 곱해서 int로만 문제를 해결하려했어요..
그리고 59에서 00으로 넘어가면 endtime이 갑자기 작아질때 boolean을 true로 변환시킨다음에 그 뒤로는 시간계산할때 60000씩 더해주고 endtime이 작아지는게 여러번이라면 60000 * 그 횟수 만큼 더해주는 방식으로 하고있습니다! (//여기가 너무 억지였나봐요 (수정))

그냥 HH:MM:SS.sss를 하나의 int로 아예 바꿔놓고 하니까 바로 해결되네요....(수정)

보고 희귀병좀 고쳐주실분,,,ㅡㅜㅜㅠㅜㅠㅜㅠ

작성중인 코드―Solution.java
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
import java.util.*;
class Traffic {
    int start;
    int end;
    Traffic(int start, int end){
        this.start = start;
        this.end = end;
    }
}
class Solution {
    static int[] DPM;
    public int solution(String[] lines) {
        int answer = 0;
        int temp_min = -1;
        int bool_CNT = 0;
        boolean second_to_minORhour = false;
        List<Traffic> t_list = new ArrayList();
        for(int i = 0; i < lines.length; i++) {
            String s1 = lines[i].substring(17, 23);
            String s2 = lines[i].substring(24, lines[i].length() - 1);
            int start = (int)(Double.parseDouble(s1) * 1000 - Double.parseDouble(s2) * 1000) + 1;
            int end = (int)(Double.parseDouble(s1) * 1000);
            if(temp_min > end)
            {
                second_to_minORhour = true;
                bool_CNT++;
            }
            if(second_to_minORhour)
            {
                t_list.add(new Traffic(start + 60000 * bool_CNT, end + 60000 * bool_CNT));
            }
            else
            {
                t_list.add(new Traffic(start, end));
            }
            temp_min = end;
        }
        int max = 1;
        for(int i = 0; i < t_list.size(); i++) {
            Traffic t = t_list.get(i);
            int cnt = 1;
            for(int j = i + 1; j < t_list.size(); j++) 
            {
                if(t.end + 1000 > t_list.get(j).start)
                    cnt++;
            }
            if(max < cnt)
                max = cnt;
        }
        answer = max;
        return answer;
    }
}
0 개의 답변
답변 쓰기
이 입력폼은 마크다운 문법을 지원합니다. 마크다운 가이드 를 참고하세요.