📌 LeetCode [2965]: Find Missing and Repeated Values문제 설명 📄2D 리스트 grid가 주어졌을 때:반복되는 값(하나 이상의 빈도)과누락된 값(주어진 값의 범위에서 누락된 값)을 구합니다.결과는 [반복된 값 리스트] + [누락된 값 리스트] 형태로 반환합니다.문제 해결 접근 📋패턴 생성:각 값의 빈도를 저장하기 위해 딕셔너리 pattern을 사용합니다.grid의 모든 요소를 순회하며 빈도를 계산합니다.총 길이 length를 계산하여 범위를 확인합니다.결과 계산:1부터 length까지의 범위를 순회하며:pattern에 없는 값은 누락된 값(missing)으로 추가합니다.빈도가 1보다 큰 값은 반복된 값(repeat)으로 추가합니다.최종적으로 repeat + mi..
전체 글
알고리즘 블로그📌 LeetCode [383]: Ransom Note🔗 문제 링크문제 설명 📄주어진 문자열 ransomNote가 문자열 magazine의 문자들만으로 구성될 수 있는지 확인하는 문제입니다.각 문자는 magazine에서 하나씩만 사용할 수 있습니다.문제 해결 접근 📋collections.Counter를 사용하여 두 문자열의 문자의 개수를 세어 각각의 빈도수를 저장합니다.& 연산자를 사용하여 두 카운터의 교집합을 구하고, 이 교집합이 ransomNote의 카운터와 동일한지 비교합니다.동일하다면 True를 반환하고, 그렇지 않다면 False를 반환합니다.Solution 💻from collections import Counterclass Solution: def canConstruct(self, ..
📌 LeetCode [2303]: Calculate Amount Paid in Taxes🔗 문제 링크문제 설명 📄소득 income과 각 세율 구간을 나타내는 brackets가 주어졌습니다. 각 구간은 [upperLimit, percent]로 나타나며, 소득이 구간의 상한을 초과하면 해당 구간의 세율이 초과된 부분에 적용됩니다.모든 소득에 대해 계산된 총 세금을 반환하세요.문제 해결 접근 📋세금 구간별로 반복하면서 해당 구간에 대해 적용할 수 있는 소득을 계산합니다.이전 구간의 상한값과 현재 구간의 상한값의 차이를 통해 해당 구간에서 과세될 금액을 계산합니다.계산된 금액에 해당 구간의 세율을 곱하여 세금을 누적합니다.소득이 0이 되면 반복을 종료하고 결과를 반환합니다.Solution 💻class ..
📌 LeetCode [733]: Flood Fill🔗 문제 링크문제 설명 📄2D 배열 image가 주어지며, 배열의 픽셀 중 (sr, sc)의 위치에서 시작하여 해당 픽셀과 동일한 색상을 가진 모든 연결된 영역을 새 색상 color로 변경해야 합니다.문제 접근 방식 📋시작 픽셀 확인:주어진 (sr, sc) 픽셀의 색상(before)을 저장하고, 이를 color로 변경해야 합니다.만약 시작 픽셀의 색상이 이미 color라면 작업이 필요 없으므로 그대로 반환합니다.BFS 방식:큐(deque)를 사용하여 시작 픽셀부터 상하좌우로 확장하며 동일한 색상을 가진 모든 픽셀을 탐색합니다.방문한 픽셀은 즉시 color로 변경하여 중복 탐색을 방지합니다.Solution 💻from collections impor..
📌 LeetCode [1791]: Find Center of Star Graph🔗 문제 링크문제 설명 📄Star Graph에서 중심 노드를 찾는 문제입니다.Star Graph는 하나의 중심 노드가 모든 다른 노드와 직접 연결된 형태의 그래프입니다.edges가 주어질 때, Star Graph의 중심 노드를 반환하세요.Solution 💻class Solution: def findCenter(self, edges: List[List[int]]) -> int: pattern = {} for one, two in edges: if one in pattern: return one if two in pattern:..
📌 LeetCode [168]: Excel Sheet Column Title🔗 문제 링크문제 설명 📄Excel 시트의 열 번호가 주어졌을 때, 이를 열 제목(A, B, ..., Z, AA, AB, ...)으로 변환하는 문제입니다.열 제목은 대문자 알파벳으로 구성되며, 열 번호는 1부터 시작합니다.Solution 💻class Solution: def convertToTitle(self, columnNumber: int) -> str: alpha = [chr(i) for i in range(65, 91)] answer = [] while columnNumber > 0: columnNumber -= 1 value = co..
📌 LeetCode [228]: Summary Ranges🔗 문제 링크문제 설명 📄정렬된 정수 배열 nums가 주어질 때, 연속된 숫자 범위를 문자열 형식으로 반환합니다.단일 숫자는 문자열로 나타냅니다.연속된 숫자는 "start->end" 형식으로 나타냅니다.문제 접근 방식 📋초기화:시작 인덱스 left를 초기화합니다.반복문 처리:배열의 끝까지 반복하면서 연속성이 끊어지는 지점을 탐지합니다.연속성이 끊어지면 해당 범위를 문자열로 저장합니다.반복문 내에서 마지막 요소까지 처리하도록 조건을 설정합니다.결과 생성:연속 범위를 정리하여 결과 리스트에 추가합니다.Solution 💻class Solution: def summaryRanges(self, nums: List[int]) -> List[st..
📌 LeetCode [703]: Kth Largest Element in a Stream🔗 문제 링크문제 설명 📄k번째로 큰 요소를 효율적으로 추적할 수 있는 클래스 KthLargest를 구현해야 합니다.KthLargest는 두 가지 주요 작업을 처리합니다:초기화: 주어진 nums 리스트와 k값을 기반으로 초기화.값 추가: 새로운 값을 추가하고 현재 k번째로 큰 값을 반환.Solution 💻import heapqclass KthLargest: def __init__(self, k: int, nums: List[int]): self.k = k self.q = [] for num in nums: heapq.heappush(self.q, n..