Greedy(2)
-
Leetcode 621. Task Scheduler - Python
Leetcode 621 문제 보기 문제 이해하기 CPU가 순차적으로 task를 하나씩 처리한다. Task는 영문 알파벳 대문자로 표시된다. 이때 같은 종류의 task는 연달아 진행할 수 없고, 휴식(idle)이 필요하다. 또한 동일한 종류의 task 사이에는 n만큼의 idle이 필요하다. clock이 일정하게 흐르고 각 task 및 idle은 종류에 상관없이 1clock의 시간을 소모한다. 모든 task를 마무리할 수 있는 가장 빠른 시간을 구하여라. 아이디어 구상 Leetcode Medium 난이도 문제였지만, 개인적으로 웬만한 Hard 난이도보다 어려운 문제였다. 이 문제에서 키 포인트는 다음과 같다. "가장 많이 수행해야하는 task부터 처리하는 것이 유리하다." 이를 위해 최대힙을 사용하여 문제를..
2022.07.18 -
Leetcode 179. Largest Number - Python
이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다Leetcode 179 문제 보기 문제 이해하기 주어진 nums 리스트에는 양의 정수들이 있다. 이들을 조합하여 만들 수 있는 가장 큰 수를 구하라. 예를 들어 nums = [3,30,34,5,9] 일 경우, 정답은 "9534330" 이다. 아이디어 구상 주어진 예시에서 알 수 있듯이, 단순히 큰 수를 앞으로 놓는다고 해결되지 않는다. 각각의 digit이 가능한 큰 숫자가 오도록 나열해야 정답을 구할 수 있다. 때문에 nums 안에 있는 각각의 숫자를 String으로 만들고, 두 개의 원소 n1, n2를 순서를 바꿔 결합하여 대소 관계를 비교, 큰 수가 앞서도록 정렬하면 되겠다. 그렇다면 이제 어떻게 이 과정을 코드로 옮..
2022.06.23