[LeetCode] Teemo Attacking

아르당·2026년 1월 20일

LeetCode

목록 보기
101/134
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

우리의 영웅 티모가 적 애쉬에게 독 공격을 하고 있다! 티모가 애쉬를 공격하면 애쉬는 정확히 duration초 동안 독에 걸린다. 더 정확히 말하면, t초에 공격이 발생하면 애쉬는 [t, t + duration - 1] 시간 동안 독에 걸린다. 티모가 독 효과가 끝나기 전에 다시 공격하면 독 효과 타이머가 초기화되고, 새로운 곡격 후 duration초 후에 독 효과가 사라진다.

주어진 것은 티모가 timeSeries[i]초에 애쉬를 공격한 시점을 나타내는 비감소 정수 배열 timeSeries와 정수 duration이다.

애쉬가 독에 걸린 총 시간을 초 단위로 반환해라.

Example

#1
Input: timeSeries = [1, 4], duration = 2
Output: 4
Explanation: 티모가 애쉬를 공격하는 방식은 다음과 같다.

  • 1초에 티모가 공격하고, 애쉬는 1초와 2초 동안 독에 걸린다.
  • 4초에 티모가 공격하고, 애쉬는 4초와 5초 동안 독에 걸린다.

따라서 애쉬는 1초, 2초, 4초, 5초, 총 4초동안 독에 걸린다.

#2
Input: timeseries = [1, 2], duration = 2
Output: 3
Explanation: 티모가 애쉬를 공격하는 방식은 다음과 같다.

  • 1초에 티모가 공격하고, 애쉬는 1초와 2초 동안 독에 걸린다.
  • 하지만 2초가 되면 티모가 다시 공격하여 독 타이머가 초기화된다. 애쉬는 2초와 3초 동안 독에 걸린다.

따라서 애쉬는 1초, 2초, 3초, 총 3초동안 독에 걸린다.

Constraints

  • 1 <= timeSeries.length <= 10^4
  • 0 <= timeSeries[i], duration <= 10^7
  • timeSeries는 오름차순으로 정렬되어 있다.

Solved

class Solution {
    public int findPoisonedDuration(int[] timeSeries, int duration) {
        if(timeSeries.length == 0 || duration == 0) return 0;

        int cnt = duration;

        for(int i = 1; i < timeSeries.length; i++){
            cnt += Math.min(timeSeries[i] - timeSeries[i - 1], duration);
        }

        return cnt;
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글