#문제 설명



Leetcode 495번은 리그 오브 레전드 캐릭터인 티모를 알고 있으면 이해하기 쉽다. 티모의 e 스킬은 티모가 상대 챔피언에게 평타를 때리면 평타를 때리면, 4초간 독 데미지를 상대에게 입힌다. 이 문제에서는 티모가 e스킬은 찍은 상태에서, 상대에게 평타를 치는 시간을 담은 배열과, 독 데미지의 지속시간이 주어진다 (실제 게임에서는 4초로 고정이지만).
또 한 가지 알아야 할것은 티모가 이미 독 데미지를 입은 상태의 상대에게 평타를 입힌다면, 독 데미지의 지속 시간은 리셋되고 상대는 다시 4초간 독데미지를 입어야한다. 예를 들어 티모가 2분40초에 평타를 입히고, 다시 2분 42초에 평타를 때리면 상대의 독데미지는 2분 46초에 끝날것이다. 이 문제는 주어진 배열과 독 데미지 지속 시간을 활용하여, 상대 챔피언이 독데미지를 입은 총 시간을 return하는 문제이다.

위에 주어진 2번 예시를 보자. [1,2] 의 배열이 주어지고, 지속시간은 2가 주어졌다. 그렇다면 1초에 티모가 평타를 때리고, 독 데미지는 1, 2초 까지 지속된다, 하지만 티모가 2초에 한번더 평타를 때리므로, 타이머가 리셋되고 2초부터 3초까지 다시 독데미지가 지속된다 그렇기 때문에 상대가 독 데미지를 입은 시간은 1,2,3 초이므로, 3을 return 하면된다.
#문제 풀이
풀이 1
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int begin = timeSeries[0], total = 0;
for (int i = 0; i < timeSeries.length; i++) {
int add = 0;
if(timeSeries[i] < begin + duration){
add = timeSeries[i] - begin;
}
else{
add = duration;
}
total = total + add;
begin = timeSeries[i];
}
return total + duration;
}
}
풀이 2
class Solution {
public int findPoisonedDuration(int[] timeSeries, int duration) {
int total = 0;
for (int i = 1; i < timeSeries.length; i++)
total += Math.min(timeSeries[i] - timeSeries[i - 1], duration);
return total + duration;
}
}