Leetcode Java Teemo Attacking
업데이트:
문제
코드
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int result = 0;
int start = 0;
int end = -1;
for (int time : timeSeries) {
if (end < time) {
result += end - start + 1;
start = time;
}
end = time + duration - 1;
}
return result + end - start + 1;
}
}
결과
설명
-
duration 동안 중독되는 독 공격 횟수 별 시간인 timeSeries가 주어지면 겹치지 않은 중독된 시간을 반환하는 문제이다.
- 문제 풀이에 필요한 변수를 정의한다.
- result는 총 중독된 시간을 계산할 변수로, 0으로 초기화한다.
- start는 중독된 시간을 계산하기 위한 시작 시간을 저장할 변수로, 0으로 초기화한다.
- end는 중독된 시간을 계산하기 위한 종료 시간을 저장할 변수로, start보다 작게 -1로 초기화한다.
- timeSeries의 모든 값을 반복하여 중독된 시간을 계산한다.
- end가 time보다 작으면 겹치지 않은 시간의 중독이므로, result에 중독된 시간인 $end - start + 1$를 더해주고 start에 time을 넣어준다.
- end에 time에 중독이 발생하면 끝나는 시간인 $time + duration - 1$을 넣어주고 반복을 계속 한다.
- 반복이 종료되면 중복되지 않은 중독된 시간으로 계산된 result와 마지막으로 중독된 시간인 $end - start + 1$을 더한 값을 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기