본문 바로가기

전체 글

(2344)
(Python3) - LeetCode (Easy) : 2558. Take Gifts From the Richest Pile https://leetcode.com/problems/take-gifts-from-the-richest-pile간단 구현 문제였습니다.📕 풀이방법📔 풀이과정k초만큼 loop를 수행하며 주어진 계산을 수행합니다.1. 최댓값의 index를 찾아 해당 원소를 sqrt후 소수점 이하는 버립니다.📔 정답 출력 | 반환계산된 gifts의 원소들의 합을 반환합니다.📕 Code📔 Python3class Solution: def pickGifts(self, gifts: List[int], k: int) -> int: for _ in range(k): max_pile_idx = gifts.index(max(gifts)) gifts[max_pile_idx]..
(Python3) - LeetCode (Medium) : 2779. Maximum Beauty of an Array After Applying Operation https://leetcode.com/problems/maximum-beauty-of-an-array-after-applying-operation/description/?envType=daily-question&envId=2024-12-11sliding window로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화1. nums를 오름차순으로 정렬해줍니다. 2. left, num_len 선언 후 각각 0과 nums의 길이로 초기화합니다. 3. 정답변수 max_length 선언 후 0으로 초기화합니다.📔 풀이과정 슬라이딩 윈도우 정의슬라이딩 윈도우는 배열에서 특정 구간(범위)을 설정하고, 이 구간을 오른쪽으로 이동(sliding)하며 조건을 만족하는 구간 내 값들을 효율적으로 계산하는 알고리즘입니다..
(Python3) - LeetCode (Medium) : 2981. Find Longest Special Substring That Occurs Thrice I https://codecollector.tistory.com/manage/newpost/?type=post&returnURL=/manage/posts/ 티스토리좀 아는 블로거들의 유용한 이야기, 티스토리. 블로그, 포트폴리오, 웹사이트까지 티스토리에서 나를 표현해 보세요.www.tistory.com전수조사를 통해 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 각 부분 문자열을 key로 빈도수를 value로 할 hash map변수 sub_str_map을 선언 후 모든 부분 문자열의 빈도수를 저장합니다. 2. 정답 변수 max_length를 선언 후 -1로 초기화합니다.📔 풀이과정sub_str_map의 모든 item에 대해 순회하며 빈도수가 3이상이라면 max_length와 해당 부분 문자열..
(Python3) - LeetCode (Medium) : 3152. Special Array II https://leetcode.com/problems/special-array-ii부분합으로 해결한 문제였습니다.📕 풀이방법📔 입력 및 초기화1. 어떤 그룹에 속해있는지 저장하기 위해 prefix_sum을 선언 후 nums의 길이만큼 초기화해줍니다.  같은 홀짝 쌍 누적 기록:prefix_sum 배열을 초기화하고, nums의 인접한 원소를 비교하여 홀짝이 같은 경우를 누적합니다.예: nums = [3, 4, 1, 2, 6]이라면 prefix_sum = [0, 0, 0, 0, 1]→ 인덱스 4에서 2와 6이 같은 홀짝이므로 prefix_sum[4] = 1 2. 정답을 저장할 빈 배열 answer를 초기화합니다.  📔 풀이과정 1. 각 쿼리에 대해, query[0]부터 query[1] 구간에서 같은 홀..
(Python3) - 백준(BOJ) 1939 : 중량 제한 https://www.acmicpc.net/problem/1939dijkstra를 max heap으로 사용해본 문제였습니다.📕 풀이방법📔 입력 및 초기화노드 개수 n, 간선 개수 m, 양방향 그래프 graph, 시작점 start와 도착점 end를 선언 후 적절히 입력 및 초기화해줍니다.📔 풀이과정어떤 경로에 최소 제한이 곧 이동 가능한 물품의 최대 하중이 됩니다. 따라서 max heap을 사용해 가장 큰 제한을 가진 노드들만 선택해 방문하도록 dijkstra를 구현해줍니다.1. 노드를 탐색할 변수 max_heap , 각 노드별 최대 하중 max_weight 배열을 선언 후 적절히 초기화합니다. 2. python에는 따로 max heap이 없으므로 원소를 저장할때 음수형태로 저장후 꺼내서 비교할 때 ..
(Python3) - LeetCode (Medium) : 2054. Two Best Non-Overlapping Events https://leetcode.com/problems/two-best-non-overlapping-events/descriptiondp와 binary search 를 사용해본 문제였습니다.📕 풀이방법📔 입력 및 초기화1. end_time에 대해 events를 오름차순으로 정렬합니다.  2. i번째 까지 event를 선택하거나 선택하지 않은 경우의 최댓값을 저장할 max_values_until_current_event를 선언 후 events길이만큼 저장해줍니다. 3. end_times를 따로 events에서 추출해 배열로 저장해줍니다.📔 풀이과정1. 이벤트 정렬: endTime 기준으로 정렬. 이렇게 하면 과거의 이벤트들 중 겹치지 않는 마지막 이벤트를 빠르게 찾을 수 있습니다.2. max_value..
(Python3) - LeetCode (Medium) : 1760. Minimum Limit of Balls in a Bag https://leetcode.com/problems/minimum-limit-of-balls-in-a-bag/이분 탐색 문제였습니다.📕 풀이방법📔 입력 및 초기화left, right를 선언해 각각 1, nums의 원소의 최댓값을 저장합니다.📔 풀이과정1. while left while left 이진 탐색에서 범위를 계속 좁혀가며 특정 값에 수렴할 때 사용하는 형태입니다. 반면, while left 정확히 값을 찾거나 특정 조건이 충족되는 순간 탐색을 종료하는 데 주로 사용됩니다.이 문제에서는 최적의 값을 찾기 위해 left와 right가 수렴하는 최종 지점까지 좁혀가야 합니다.left :예를 들어, mid = (left + right) // 2로 계산하고 범위를 조정할 때 left와 right의 ..
(Python3) - LeetCode (Medium) : 2337. Move Pieces to Obtain a String https://leetcode.com/problems/move-pieces-to-obtain-a-string문자열을 다뤄본 문제였습니다.📕 풀이방법📔 입력 및 초기화_는 이동할 수 있는 공간 즉, 비어 있으므로 고려할 필요 없습니다. 만들어야되는 'L', 'R'의 index를 함께 배열 start_idx_char, target_idx_char를 선언해 저장합니다.📔 풀이과정1. start_idx_char과 target_idx_char의 길이가 다르다면 이동해서 target을 만들 수 없으므로 False를 반환합니다. 2. 빈 공간을 제거했는데 start의 'L', 'R'배치와 target의 'L', 'R'배치의 순서가 다르다면 만들 수 없으므로 False를 반환합니다. 3. 같은 길이와 순서를 가진..