본문 바로가기

Algorithm/Implementation

(C++) - LeetCode (easy) 1629. Slowest Key

반응형

https://leetcode.com/problems/slowest-key/description/

간단 구현 문제였습니다.

📕 풀이방법

📔 입력 및 초기화

1. 정답 구조체  Answer에 가장 길게 눌린 문자 character와 눌린 시간 duration을 가진 ans를 선언해 keysPressed, releaseTimes의 0번째 값을 넣어줍니다.2. 정보가 입력된 길이 size를 선언 후 값을 적절히 저장합니다.

📔 풀이과정

size만큼 for loop를 수행합니다. 1. 현재 문자 curChar가 눌린 duration이 ans.duration 이상이라면 값을 갱신해줘야합니다.  1-1. 같은 duration이라면 더 큰 값의 문자를 ans.character에 저장합니다. 이외의 경우 현재 문자를 ans.character에 저장합니다.  1-2. 1-1과 상관없이 이상이라면 해당 duration을 갱신해 ans.duration에 저장합니다.

📔 정답 출력 | 반환

ans.character를 반환합니다.


📕 Code

📔 C++

struct Answer {
    char character;
    int duration;
};

class Solution {
public:
    char slowestKey(vector<int>& releaseTimes, string keysPressed) {
        Answer ans = {keysPressed[0], releaseTimes[0]};
        int size = releaseTimes.size();
        for(int i = 1; i < size; i++) {
            int duration = releaseTimes[i] - releaseTimes[i-1];
            char curChar = keysPressed[i];
            if (ans.duration <= duration) {
                if(ans.duration == duration) {
                    ans.character = max(ans.character, curChar);
                } else {
                    ans.character = curChar;
                }
                ans.duration = duration;
            }
        }
        return ans.character;
    }
};

*더 나은 내용을 위한 지적, 조언은 언제나 환영합니다.