반응형
주어진 문제는 위와 같다. n 을 크기로 갖는 문자열 'keysPressed' 와 배열 'releaseTimes' 이 주어지는데 'keysPressed' 는 어떤 순간 어떤 키가 눌렸는 지, 'releaseTimes' 는 각 키가 떼진 순간의 시간을 의미한다.
i 번째로 눌린 키가 눌려진 기간은 releaseTimes[i] - releaseTimes[i - 1] 로 표현된다. (0 번째 키는 releaseTimes[0]) 주어진 정보를 바탕으로 가장 오랫동안 눌려진 키를 찾는 문제이다. 서로 다른 순간에 같은 키가 눌릴 수 있고, 같은 키가 눌린 시간은 각각의 시간으로만 평가하고 누적되지 않는다. 가장 오래 눌려진 키가 여러 개일 경우에는, 사전적으로 더 큰 값을 갖는 키를 정답으로 갖는다.
이 문제는, 단순히 0 번째부터 n - 1 번째까지 (0 - indexed) 각각의 키가 눌린 시간을 계산해 그 중 가장 큰 값을 찾도록 하는 방식으로 문제를 해결했고, 해결을 위해 작성한 소스 코드는 다음과 같다.
class Solution {
public:
char slowestKey(vector<int> &releaseTimes, string keysPressed) {
int len = keysPressed.length();
char ans = keysPressed[0];
int longestDuration = releaseTimes[0];
for (int i = 1; i < len; i++) {
int duration = releaseTimes[i] - releaseTimes[i - 1];
if (duration > longestDuration || (duration == longestDuration && keysPressed[i] > ans)) {
ans = keysPressed[i];
longestDuration = duration;
}
}
return ans;
}
};
'Algorithm > LeetCode' 카테고리의 다른 글
[LeetCode # 206] Reverse Linked List (0) | 2021.09.08 |
---|---|
[LeetCode # 68] Text Justification (0) | 2021.09.07 |
[LeetCode # 95] Unique Binary Search Trees II (0) | 2021.09.03 |
[LeetCode # 153] Find Minimum in Rotated Sorted Array (0) | 2021.09.01 |
[LeetCode # 60] Permutation Sequence (0) | 2021.09.01 |