📌 LeetCode [1652]: Defuse the Bomb🔗 문제 링크문제 설명 📄정수 배열 code와 정수 k가 주어집니다. 배열 code는 원형으로 연결된 형태로 동작하며, 배열의 각 원소를 특정 규칙에 따라 암호화 해제해야 합니다.k > 0: 현재 위치에서 오른쪽으로 k개의 요소의 합을 구합니다.k : 현재 위치에서 왼쪽으로 |k|개의 요소의 합을 구합니다.k == 0: 배열의 모든 값은 0으로 설정됩니다.code의 암호 해제된 배열을 반환하세요.문제 해결 접근 💡문제를 단순화하기:k의 값이 양수/음수/0인 경우를 분리해서 해결합니다.양수일 경우: 오른쪽으로 이동하며 합 계산.음수일 경우: 왼쪽으로 이동하며 합 계산.k == 0일 경우: 모든 값을 0으로 설정.효율적인 계산:배열의 길이를..
알고리즘
📌 LeetCode [2220]: Minimum Bit Flips to Convert Number🔗 문제 링크문제 설명 📄두 정수 start와 goal이 주어졌을 때, start를 goal로 변환하기 위해 뒤집어야 하는 최소 비트 개수를 구하세요.문제 해결 접근 🚀이진수 변환 및 길이 맞추기:두 숫자를 이진수로 변환합니다.bin(start)[2:]와 bin(goal)[2:]를 사용하여 이진수 문자열로 변환한 뒤, 짧은 문자열 앞에 0을 채워 길이를 맞춥니다.비트 비교:두 이진수 문자열을 순차적으로 비교하여 다른 비트 개수를 세줍니다.최종 결과:뒤집어야 하는 비트의 개수를 반환합니다.Solution 💻class Solution: def minBitFlips(self, start: int, g..
📌 LeetCode [136]: Single Number문제 설명 📄주어진 정수 배열 nums에서, 모든 숫자가 두 번 나타나는 상황에서 단 한 번만 나타나는 숫자를 찾으세요.반환 값은 반드시 고유하며, 배열의 각 요소는 한 번만 나타나거나 두 번 나타납니다.문제 해결 접근 📋빈도 계산:collections.Counter를 사용하여 각 숫자의 빈도를 계산합니다.단일 숫자 찾기:빈도 값이 1인 숫자를 찾아 반환합니다.Solution 💻from collections import Counterclass Solution: def singleNumber(self, nums: List[int]) -> int: count = Counter(nums) for key, value i..
📌 LeetCode [278]: First Bad Version문제 설명 📄제품 버전이 1부터 n까지 순서대로 제공됩니다.어떤 버전부터 "나쁜 버전"(bad version)이 시작됩니다.isBadVersion(version: int) -> bool API를 사용하여 첫 번째 나쁜 버전을 찾아야 합니다.문제 해결 접근 📋이진 탐색:left와 right 포인터를 설정하여 탐색 범위를 줄입니다.중간 값 mid를 계산하고 isBadVersion(mid)로 확인합니다.mid가 나쁜 버전이면 right = mid - 1로 갱신하여 더 작은 범위를 탐색.그렇지 않으면 left = mid + 1로 갱신하여 더 큰 범위를 탐색.결과 반환:탐색이 끝난 후 첫 번째 나쁜 버전(left)을 반환합니다.Solution ?..
📌 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..