๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์•Œ๊ณ ๋ฆฌ์ฆ˜

[2018 ์นด์นด์˜ค ๋ธ”๋ผ์ธ๋“œ ์ฑ„์šฉ] ์ถ”์„ ํŠธ๋ž˜ํ”ฝ

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/17676

 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

์†Œ์Šค์ฝ”๋“œ

import java.util.Arrays;

class Solution {
    public int solution(String[] lines) {
        int[] tps = new int[24*60*60*1000 + 4000];

        Arrays.stream(lines).forEach(log -> check(log, tps));

        return Arrays.stream(tps).max().getAsInt();
    }

    public void check(String log, int[] tps) {
        String[] str = log.split("[s\\s]");

        double end = timeToSec(str[1]);
        double start = end - Double.parseDouble(str[2]) - 0.998;
        
        int s = (int) (1000 * (start + 4.000));
        int e = (int) (1000 * (end + 4.000));

        for(int i=s; i<=e; ++i) tps[i]++;
    }

    public double timeToSec(String time) {
        String[] str = time.split(":");
        
        int h = Integer.parseInt(str[0]);
        int m = Integer.parseInt(str[1]);
        double s = Double.parseDouble(str[2]);
        
        return 60*60*h + 60*m + s;
    }

}

 

ํšŒ๊ณ 

- ์งœ์ž˜์งœ์ž˜ ์‹ ๊ฒฝ์จ์•ผ ๋  ๊ฒŒ ๋งŽ์•„์„œ ํž˜๋“ค์—ˆ์Œ.

- ์–ด์ œ๋กœ ๋„˜์–ด๊ฐ€๋Š” ๋ถ€๋ถ„์„ ๊ณ ๋ คํ•ด์„œ ์ธ๋ฑ์Šค๋ฅผ 4000 ๋งŒํผ ๋ฏธ๋ค„์•ผํ–ˆ์Œ.