PS 3

[LeetCode] 15. 3Sum

문제정수형 배열 nums 가 주어질 때, 아래 조건을 만족하는 [nums[i], nums[j], nums[k]] 들의 리스트를 반환해야하는 문제이다.조건i != j, i != k, j != k 이다.nums[i] + nums[j] + nums[k] == 0$3 $-10^5 정답 배열에는 중복된 triplet이 없어야 한다.나의 풀이배열의 길이가 3000 이하이므로, $O(n^2)$의 시간 복잡도를 확보해야될 것이라고 생각하고 접근했다.우선 배열을 오름차순으로 정렬하여, 문제의 복잡성을 줄였다. 그런 다음, 이중 for문을 돌면서 두 개의 숫자(nums[i], nums[j])를 찍고, nums 배열 안에 -(nums[i] + nums[j]) 를 만족하는 숫자가 있는지 확인하는 방식으로 풀었다.코드class..

PS 2024.12.07

[LeetCode] 347. Top K Frequent Elements

문제정수형 배열 nums 와 정수 k 가 주어진다. nums 안에서 가장 많이 발견된 요소 k 개를 순서없이 반환하면 된다.예시nums = [1,1,1,2,2,3], k = 2 로 주어졌다고 가정해보자.nums 안에서 1는 세 번, 2는 두 번, 3은 한 번 발견되었으므로, [1, 2] 를 반환하면 된다.풀이법nums 를 순회하면서 각 요소가 몇 번 발견되는지를 기록한다.그런 다음 기록한 값을 우선순위 큐에 넣고, 반복 수가 가장 많은 것부터 k 개를 꺼내면 된다.class Solution: def topKFrequent(self, nums: List[int], k: int) -> List[int]: """ :param nums: 정수형 배열. 요소의 범위는 -10^4

PS 2024.10.30

[LeetCode] 153. Find Minimum in Rotated Sorted Array

https://leetcode.com/problems/find-minimum-in-rotated-sorted-array/description/문제오름차순으로 정렬되어 있고 길이가 $n$인 배열 nums 가 주어진다. 이 배열은 1부터 $n$ 사이만큼 회전되어 있다.예를 들어, nums = [0,1,2,4,5,6,7] 일 때, 4번 회전되었다면 다음과 같다.[4,5,6,7,0,1,2]배열 nums 에는 중복된 값이 없을 때, 배열에 있는 가장 작은 값을 찾는 것이 목표이다.풀이법배열 내 가장 작은 요소는 배열 내 가장 큰 요소와 두 번째로 작은 요소 사이에 있다는 것이 자명했다. 이진 탐색을 사용하여, 가장 작은 요소가 존재할 구간을 좁혀나가는 방식으로 문제를 해결했다.구간의 양 끝의 요소를 비교하여 왼쪽..

PS 2024.10.27