알고리즘/Array

비교

Algorithmus 2022. 5. 8. 13:43

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

 

Slowest Key - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

이런 문제를 보자. 정렬시 두 조건을 차례로 비교하는 문제이다. max도 결국 비교하는 함수이므로 sort와 마찬가지로 key= 를 줄 수 있게 되어 있음을 안다면 쉽게 해결할 수 있다.

class Solution:
    def slowestKey(self, releaseTimes: List[int], keysPressed: str) -> str:
        prev, max_dur = 0, (0, 'z')
        for rt_idx in range(len(releaseTimes)):
            curr = releaseTimes[rt_idx]
            dur, prev, cur_key = curr - prev, curr, keysPressed[rt_idx]
            max_dur = max((dur, cur_key), max_dur,
                          key=lambda tu: (tu[0], tu[1]))
        return max_dur[1]

그러나, tuple은 따로 키를 안 주어도 순서대로 이를 비교한다. 그러므로 sort() 나 sorted() 에서 그냥 원소 자체를 tuple로 묶으면 된다.

class Solution:
    def slowestKey(self, releaseTimes: List[int], keysPressed: str) -> str:
        prev, max_dur = 0, (0, 'z')
        for rt_idx in range(len(releaseTimes)):
            curr = releaseTimes[rt_idx]
            dur, prev, cur_key = curr - prev, curr, keysPressed[rt_idx]
            max_dur = max((dur, cur_key), max_dur)
        return max_dur[1]
반응형

'알고리즘 > Array' 카테고리의 다른 글

Circular Array  (0) 2022.05.29
string methods  (0) 2022.03.03