전체 글 (2312) 썸네일형 리스트형 (Python3) - LeetCode (Medium) : 2. Add Two Numbers https://leetcode.com/problems/reverse-odd-levels-of-binary-treelevel별 순회하는 bfs 문제였습니다.📕 풀이방법📔 입력 및 초기화1. deque선언 후 root를 넣어줍니다. 2. level 선언 후 0으로 초기화합니다.📔 풀이과정dq에 원소가 있는 동안 while loop로 다음을 진행합니다.1. 현재 레벨에서 순회가능한 node 수는 dq의 크기입니다. 따라서 dq의 크기만큼 for loop를 수행하며 넣을 수 있는 다음 왼쪽, 오른쪽 서브 트리의 노드들을 넣어줍니다. 2. 완전 이진 트리이므로 왼쪽과 오른쪽 서브 트리에는 말단을 제외하고 항상 원소가 존재합니다. 서브트리가 존재하면 dq에 원소들을 넣어주고, 다음 레벨이 홀수라면 원소들을 뒤.. (Python3) - LeetCode (Medium) : 2. Add Two Numbers https://leetcode.com/problems/add-two-numbers/description/재귀를 활용해 linked list 순회 및 자료구조를 만들어본 문제였습니다.📕 풀이방법📔 입력 및 초기화 📔 풀이과정1. l1, l2를 순회하며 실제 숫자를 추출하는 함수 num_of_linked_list를 구현해줍니다. next가 None이 아닌 동안 loop를 수행하면서 현재 값에 10의 piv승만큼 곱한 값을 num에 더해주는 방식입니다. 해당 결과를 num에 저장합니다. 2. 주어진 num을 입력받아 reverse로 num의 일의 자리 수로 linked list를 재귀형태로 연결하여 만들어진 linked list를 반환하는 make_linked_list를 구현해줍니다. 해당 결과를 a.. (Python3) - LeetCode (Easy) : 1475. Final Prices With a Special Discount in a Shop https://leetcode.com/problems/final-prices-with-a-special-discount-in-a-shop간단 전수조사 문제였습니다.📕 풀이방법📔 풀이과정prices에 대해 2차원 for loop를 돌며 다음을 진행합니다. 현 i번째 다음부터 prices[i]가격보다 작은 prices[j]를 찾아 prices[i]에서 해당 값을 빼줍니다.📔 정답 출력 | 반환할인된 prices를 반환합니다.📕 Code📔 Python3class Solution: def finalPrices(self, prices: List[int]) -> List[int]: for i in range(len(prices)): for j in range(i+1.. (Python3) - LeetCode (Medium) : 2182. Construct String With Repeat Limit https://leetcode.com/problems/construct-string-with-repeat-limit📕 풀이방법📔 입력 및 초기화key로는 알파뱃 value는 빈도 수를 저장할 해시맵 char_map, max_heap, 정답변수 answer, 이전 문자 prev를 선언 후 적절히 저장해줍니다. max_heap은 python에서 제공되지 않으므로 저장시 음수로 저장해줍니다.📔 풀이과정큰 문자부터 넣다가 reapeatLimit을 넘어가면 다음문자를 1개씩 넣어줍니다. 이 때 큰 문자와 이전에 넣은 문자가 같은 경우 적절히 빼서 repeatLimit만큼의 문자만 answer 뒤에 붙이도록 구현해야합니다. max_heap에 원소가 있는 동안 다음을 진행합니다.1. 이전에 있는 문자가 같고 .. (Python3) - LeetCode (Easy) : 3264. Final Array State After K Multiplication Operations I https://leetcode.com/problems/final-array-state-after-k-multiplication-operations-i간단 bottom up 전수조사 문제였습니다.📕 풀이방법📔 풀이과정k만큼 다음 연산을 수행합니다.1. nums에서 최솟값에 대한 index를 구해 min_num_idx에 저장합니다. 2. min_num_idx번째 값에 multiplier를 곱해줍니다.📔 정답 출력 | 반환nums를 반환합니다.📕 Code📔 Python3class Solution: def getFinalState(self, nums: List[int], k: int, multiplier: int) -> List[int]: for _ in range(k): .. (Python3) - LeetCode (Medium) : 1792. Maximum Average Pass Ratio https://leetcode.com/problems/maximum-average-pass-ratiomax heap을 사용해본 문제였습니다.📕 풀이방법📔 입력 및 초기화정답 avg, heap pq를 선언 후 (1명이 추가될 경우 증가하는 합격율, 현재 합격율, index정보)를 하나의 tuple로 classes의 원소를 순회하며 계산해 저장합니다.📔 풀이과정extraStudents만큼 for loop를 수행하며, 1명 증가시 비율이 최대한 증가하는 순으로 extraStudents를 배분해줍니다. 1. python에서는 max heap이 없으므로 -형태로 tuple의 첫 번째 값을 저장하고 꺼냈을 때 -후 값을 구합니다. 2. classes에서 추가될 idx번째 수업에서 통과자와 전체 인원을 1씩 .. (Python3) - LeetCode (Medium) : 2593. Find Score of an Array After Marking All Elements https://leetcode.com/problems/continuous-subarrays주어진 배열 nums에서, 연속적인 부분 배열(subarray) 중에서 그 배열의 최댓값과 최솟값의 차이가 2 이하인 경우를 모두 찾아내는 문제입니다.각 원소를 한 번씩만 순회하면서 윈도우의 범위를 조절해 효율적으로 문제를 해결해야 합니다. 따라서 슬라이딩 윈도우(Sliding Window)와 모노톤 큐(Monotonic Queue)를 활용한 O(n)복잡도의 풀이를 고려합니다.📕 풀이방법📔 입력 및 초기화정답 변수 answer, left, 현 index에서 최댓값 max_queue, 최솟값 min_queue 선언 후 각각 0으로 초기화합니다.📔 풀이과정예시 입력: nums = [2, 4, 5, 3]배열의 각 .. (Python3) - LeetCode (Medium) : 2593. Find Score of an Array After Marking All Elements https://leetcode.com/problems/find-score-of-an-array-after-marking-all-elements📕 풀이방법📔 입력 및 초기화1. 우선순위 큐 pq, 정답 score, check 여부 ck배열 선언 후 적절히 초기화합니다. 2. nums의 원소를 순회하면 값, index정보를 pq에 저장합니다.📔 풀이과정min heap인 pq의 원소에 대해 while lop를 수행하며 다음을 진행합니다.1. 이미 check되어 있다면 continue 합니다. 2. check가 안된 원소를 score에 더하고 인접 index를 범위를 넘지 않았다면 check해줍니다. pq의 길이 n개 만큼 while loop를 진행해 인접 원소를 pop후 check해주므로 우선순위큐에 원.. 이전 1 2 3 4 ··· 289 다음