전체 글

알고리즘 블로그
· 알고리즘
📌 LeetCode [2037]: Minimum Number of Moves to Seat Everyone🔗 문제 링크문제 설명 📄학생들을 좌석에 앉히는 문제입니다.두 개의 리스트가 주어집니다:seats: 좌석의 위치를 나타내는 정수 리스트.students: 학생들이 현재 위치한 정수 리스트.학생들을 좌석에 앉히기 위해 학생들을 좌석으로 이동시켜야 합니다.이동 거리의 최소 합을 계산하세요.학생은 한 번에 1만큼 이동할 수 있습니다.문제 접근 방식 📋정렬:학생과 좌석을 정렬하여 가장 가까운 순서로 매칭.매칭 및 거리 계산:정렬된 seats와 students를 zip으로 매칭.각 좌석과 학생 간의 거리를 계산하여 합산.Solution 💻class Solution: def minMovesToSe..
· 알고리즘
📌 LeetCode [1200]: Minimum Absolute Difference🔗 문제 링크문제 설명 📄정수 배열 arr가 주어졌습니다. 배열에서 두 수의 차이의 절대값이 최소가 되는 모든 쌍을 찾고, 이를 정렬된 형태로 반환하세요.반환된 쌍은 오름차순으로 정렬되어야 합니다.각 쌍은 [a, b] 형태이며, (a 문제 접근 방식 📋집합 활용:배열을 정렬한 뒤, 집합을 사용하여 숫자의 존재를 빠르게 확인.최소 차이 탐색:인접한 두 원소 간의 차이를 계산하여 최소값을 갱신.결과 쌍 수집:집합에서 최소 차이를 만족하는 쌍을 찾아 결과에 추가.Solution 💻class Solution: def minimumAbsDifference(self, arr: List[int]) -> List[List[..
· 알고리즘
📌 LeetCode [2418]: Sort the People🔗 문제 링크문제 설명 📄주어진 두 개의 리스트 names와 heights가 있습니다:names: 사람들의 이름을 나타내는 문자열 리스트.heights: 사람들의 키를 나타내는 정수 리스트.사람들의 키를 기준으로 내림차순으로 정렬하고, 정렬된 이름 리스트를 반환하세요.문제 접근 방식 📋키와 이름을 쌍으로 묶기:zip을 사용해 키와 이름을 튜플로 묶습니다.키를 기준으로 정렬:sorted를 사용해 각 쌍을 키를 기준으로 내림차순으로 정렬합니다.정렬된 결과에서 이름 추출:정렬된 리스트에서 이름만 추출해 결과를 반환합니다.Solution 💻class Solution: def sortPeople(self, names: List[str], ..
· 알고리즘
📌 LeetCode [2696]: Minimum String Length After Removing Substrings🔗 문제 링크문제 설명 📄주어진 문자열 s에서, 다음 규칙에 따라 문자열을 변환합니다:문자열에서 "AB" 또는 "CD"가 연속된 경우 이를 제거합니다.제거한 뒤, 남은 문자열로 다시 같은 과정을 반복합니다.더 이상 "AB" 또는 "CD"를 제거할 수 없으면 문자열의 길이를 반환합니다.목표: 최종적으로 남은 문자열의 길이를 계산하세요.문제 접근 방식 📋스택을 활용:스택 자료구조를 이용해 "AB" 또는 "CD"를 제거합니다.스택의 마지막 문자와 현재 문자를 비교하여 규칙에 따라 제거 또는 추가 작업을 수행합니다.최종 결과:문자열 탐색이 끝난 후, 스택에 남은 문자의 개수가 최종 문자열..
· 알고리즘
📌 LeetCode [2022]: Convert 1D Array Into 2D Array🔗 문제 링크문제 설명 📄1차원 배열 original과 행 개수 m, 열 개수 n이 주어졌습니다.1차원 배열을 주어진 크기의 2차원 배열로 변환해야 합니다.조건:변환이 불가능하면 빈 배열을 반환합니다.변환된 배열의 요소는 original 배열의 요소 순서를 유지해야 합니다.문제 접근 방식 📋조건 확인:배열 original의 길이와 주어진 2D 배열 크기 (m \times n)이 맞는지 확인합니다.길이가 맞지 않으면 변환할 수 없으므로 빈 배열을 반환합니다.행 단위로 원소 채우기:각 원소를 row * n + col 방식으로 계산하여 적절히 배열에 배치합니다.Solution 💻class Solution: d..
· 알고리즘
📌 LeetCode [796]: Rotate String🔗 문제 링크문제 설명 📄문자열 s를 임의로 회전(rotate)하여 문자열 goal과 동일하게 만들 수 있는지 확인하는 문제입니다.문자열을 회전시키는 방법은 문자열의 왼쪽에서 한 글자를 잘라서 끝으로 붙이는 것입니다.문제 접근 방식 📋회전된 문자열 생성:문자열 s의 부분 문자열을 슬라이싱하여 회전된 문자열을 생성합니다.생성된 문자열과 goal을 비교합니다.동등성 비교:회전된 문자열이 goal과 동일한 경우 True를 반환합니다.모든 회전된 문자열을 검사한 후에도 goal과 동일한 경우가 없으면 False를 반환합니다.Solution 💻class Solution: def rotateString(self, s: str, goal: str)..
· 알고리즘
📌 LeetCode [1331]: Rank Transform of an Array🔗 문제 링크문제 설명 📄주어진 배열 arr의 각 요소를 랭크(Rank)로 변환해야 합니다.랭크는 다음과 같은 규칙에 따라 정의됩니다:배열의 고유 요소들을 정렬합니다.정렬된 순서에 따라 각 고유 요소에 1부터 시작하는 랭크를 할당합니다.원래 배열의 각 요소를 해당 랭크로 대체하여 반환합니다.문제 접근 방식 📋중복 제거 및 정렬:set을 사용해 고유 요소를 추출한 뒤, 정렬하여 각 요소에 랭크를 할당합니다.맵핑 생성:정렬된 요소를 기준으로 {값: 랭크} 형태의 딕셔너리를 생성합니다.랭크 변환:원래 배열의 각 요소를 딕셔너리를 참조해 랭크로 변환합니다.Solution 💻class Solution: def array..
· 알고리즘
📌 LeetCode [1331]: Rank Transform of an Array🔗 문제 링크문제 설명 📄주어진 배열 arr의 각 요소를 랭크(Rank)로 변환해야 합니다.랭크는 다음과 같은 규칙에 따라 정의됩니다:배열의 고유 요소들을 정렬합니다.정렬된 순서에 따라 각 고유 요소에 1부터 시작하는 랭크를 할당합니다.원래 배열의 각 요소를 해당 랭크로 대체하여 반환합니다.문제 접근 방식 📋중복 제거 및 정렬:set을 사용해 고유 요소를 추출한 뒤, 정렬하여 각 요소에 랭크를 할당합니다.맵핑 생성:정렬된 요소를 기준으로 {값: 랭크} 형태의 딕셔너리를 생성합니다.랭크 변환:원래 배열의 각 요소를 딕셔너리를 참조해 랭크로 변환합니다.Solution 💻class Solution: def array..
알고리즘 노트
알고리즘 노트