import java.util.*;
class Solution {
public static int[] solution(int[] progresses, int[] speeds) {
Map<Integer, Integer> resultMap = new TreeMap<>();
int days = 0;
for (int i = 0; i < progresses.length; i++) {
double mock = (double)(100 - progresses[i])/speeds[i];
int tmpDays = (int)Math.ceil(mock);
days = days > tmpDays ? days : tmpDays;
resultMap.put(days, resultMap.getOrDefault(days, 0) + 1);
}
int[] result = new int[resultMap.size()];
int idx = 0;
for (int i : resultMap.values()){
result[idx++] = i;
}
return result;
}
}
작업 완료 일수 계산식을 구해 반복문을 최소화했다
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (4.23ms, 52MB)
테스트 2 〉 통과 (1.92ms, 52.3MB)
테스트 3 〉 통과 (0.85ms, 52MB)
테스트 4 〉 통과 (1.87ms, 53.1MB)
테스트 5 〉 통과 (1.78ms, 52.6MB)
테스트 6 〉 통과 (1.93ms, 52.7MB)
테스트 7 〉 통과 (1.67ms, 52.5MB)
테스트 8 〉 통과 (0.74ms, 52.9MB)
테스트 9 〉 통과 (2.41ms, 52.8MB)
테스트 10 〉 통과 (4.36ms, 52.5MB)
테스트 11 〉 통과 (0.75ms, 53.5MB)
import math
def solution(progresses, speeds):
day = 0
result = {}
for p, s in zip(progresses, speeds):
mok = math.ceil((100 - p) / s)
day = day > mok and day or mok
if (result.__contains__(day)):
result[day] += 1
else:
result[day] = 1
return list(result.values())
java와 비슷한 구현 방식이지만 코드 라인이 줄어든게 눈에 띈다
정확성 테스트
정확성 테스트
테스트 1 〉 통과 (0.01ms, 10.1MB)
테스트 2 〉 통과 (0.05ms, 10.1MB)
테스트 3 〉 통과 (0.04ms, 10.3MB)
테스트 4 〉 통과 (0.02ms, 10.1MB)
테스트 5 〉 통과 (0.01ms, 10.2MB)
테스트 6 〉 통과 (0.01ms, 10.2MB)
테스트 7 〉 통과 (0.04ms, 10.3MB)
테스트 8 〉 통과 (0.01ms, 10.1MB)
테스트 9 〉 통과 (0.03ms, 10.2MB)
테스트 10 〉 통과 (0.04ms, 10.2MB)
테스트 11 〉 통과 (0.01ms, 10.2MB)