📌 LeetCode [1710]: Maximum Units on a Truck🔗 문제 링크문제 설명 📄트럭에 적재할 수 있는 최대 유닛을 계산하는 문제입니다.박스의 종류와 각각의 박스당 유닛 수가 주어졌을 때, 유닛 수가 많은 박스를 우선적으로 적재하여 최대 유닛을 적재해야 합니다. 트럭에는 제한된 수의 박스만 적재할 수 있습니다.문제 접근 방식 📋정렬:박스당 유닛 수를 기준으로 내림차순 정렬합니다.최적 적재:각 박스 타입에서 현재 트럭이 적재 가능한 박스 수를 계산하고, 트럭 크기를 감소시킵니다.트럭이 가득 찼으면 루프를 종료합니다.Solution 💻class Solution: def maximumUnits(self, boxTypes: List[List[int]], truckSize: i..
전체 글
알고리즘 블로그📌 LeetCode [1957]: Delete Characters to Make Fancy String🔗 문제 링크문제 설명 📄주어진 문자열 s에서 연속된 동일한 문자가 3개 이상 나오지 않도록 문자를 삭제하여 새로운 문자열을 반환해야 합니다.문제 접근 방식 📋스택 활용:문자열을 순회하며 각 문자를 스택에 추가합니다.스택의 길이가 3 이상일 때, 마지막 세 문자가 동일하면 가장 마지막 문자를 제거합니다.이를 반복하면서 조건에 맞는 결과 문자열을 생성합니다.시간 복잡도 최적화:스택을 사용하여 O(n) 시간 복잡도로 해결할 수 있습니다.Solution 💻class Solution: def makeFancyString(self, s: str) -> str: stack = [] ..
📌 LeetCode [2053]: Kth Distinct String in an Array🔗 문제 링크문제 설명 📄주어진 문자열 배열 arr에서 고유한 문자열(distinct string) 중 k번째 문자열을 반환합니다. 고유한 문자열은 배열에서 한 번만 등장하는 문자열입니다.k번째 고유 문자열이 존재하지 않으면 빈 문자열 ""을 반환합니다.문제 접근 방식 📋문자열 빈도 계산:Counter를 사용해 배열 arr에서 각 문자열의 빈도수를 계산합니다.순서 유지:등장 순서대로 문자열을 저장하기 위해 OrderedDict를 사용합니다.빈도수가 1인 문자열만 OrderedDict에 저장합니다.k번째 문자열 반환:OrderedDict의 키를 리스트로 변환해 인덱스를 통해 k번째 문자열을 찾습니다.Soluti..
📌 LeetCode [345]: Reverse Vowels of a String🔗 문제 링크문제 설명 📄주어진 문자열 s에서 모음만을 역순으로 정렬한 후 새로운 문자열을 반환하세요.모음은 영어 소문자와 대문자의 a, e, i, o, u를 포함합니다.문제 접근 방식 📋모음 탐색 및 저장:문자열을 순회하며 모음의 위치와 모음 문자를 각각 저장.모음 역순 정렬:저장된 모음을 역순으로 정렬.모음을 원래 위치에 삽입:저장된 위치를 사용해, 역순으로 정렬된 모음을 해당 위치에 배치.새로운 문자열 반환:최종 배열을 문자열로 변환하여 반환.Solution 💻class Solution: def reverseVowels(self, s: str) -> str: vowels = ['a', 'e', ..
📌 LeetCode [876]: Middle of the Linked List🔗 문제 링크문제 설명 📄단일 연결 리스트의 헤드 head가 주어집니다.리스트의 중간 노드를 반환하세요.리스트의 길이가 짝수라면, 두 번째 중간 노드를 반환해야 합니다.문제 접근 방식 📋리스트 길이 계산:리스트를 한 번 순회하며 전체 길이를 계산.중간 위치 탐색:길이의 절반만큼 다시 순회하여 중간 노드에 도달.중간 노드 반환:중간에 도달한 노드를 반환.Solution 💻# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0, next=None):# self.val = val# self.next = ..
📌 LeetCode [771]: Jewels and Stones🔗 문제 링크문제 설명 📄문자열 jewels와 stones가 주어집니다.jewels는 보석을 나타내고, stones는 보석과 돌이 섞여있는 문자열입니다.stones에 포함된 보석의 개수를 반환하세요.문제 접근 방식 📋보석과 돌의 빈도 계산:Counter를 사용하여 stones의 각 문자의 빈도를 저장.보석 개수 합산:jewels에 포함된 각 문자를 순회하면서, stones에서 해당 보석의 개수를 합산.최종 결과 반환:합산한 개수를 반환.Solution 💻from collections import Counterclass Solution: def numJewelsInStones(self, jewels: str, stones: str..
📌 LeetCode [485]: Max Consecutive Ones🔗 문제 링크문제 설명 📄0과 1로 구성된 정수 배열 nums가 주어집니다.배열에서 연속된 1의 최대 길이를 반환하세요.문제 접근 방식 📋변수 설정:temp: 현재 연속된 1의 길이를 저장.answer: 현재까지 발견된 최대 연속된 1의 길이를 저장.반복문으로 배열 순회:현재 숫자가 1이면 temp를 증가.숫자가 0이면 answer를 업데이트하고 temp를 초기화.최종 갱신:반복문이 종료된 후, 마지막 temp 값과 answer를 비교하여 최종 결과를 반환.Solution 💻class Solution: def findMaxConsecutiveOnes(self, nums: List[int]) -> int: ans..
📌 LeetCode [867]: Transpose Matrix🔗 문제 링크문제 설명 📄주어진 2D 행렬 matrix를 전치 행렬로 변환하세요.전치 행렬은 다음과 같은 규칙을 따릅니다:result[i][j] = matrix[j][i]문제 접근 방식 📋전치 행렬의 구조 이해:원래 행렬의 행(i)과 열(j)의 값을 교환하여 새 행렬을 만듭니다.새 행렬의 크기는 원래 행렬의 열과 행의 크기가 뒤바뀝니다.결과 행렬 초기화:전치 행렬을 저장할 크기와 초기값이 설정된 2D 배열을 생성합니다.이중 반복문 사용:원래 행렬을 순회하면서 값을 교환하여 새 행렬에 추가합니다.Solution 💻class Solution: def transpose(self, matrix: List[List[int]]) -> Lis..