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 |