Algorithm 문제풀이/Leetcode(28)
-
(Easy - Array) Leetcode - 2022. Convert 1D Array Into 2D Array
이 문제는 1차원 배열이 주어지면 2차원 배열로 바꾸는 문제입니다.즉, 1차원 배열을 2차원 배열처럼 사용할 줄 알면 풀 수 있는 문제입니다. 1D Array로 2D Array처럼 사용하기 위해서는 Index를 다음과 같이 사용하면 됩니다. 어떤 2차원 index (x, y)의 1차원 index는 x + width * y"와 같습니다. (y * width + x)vector> construct2DArray(vector& original, int m, int n) { if (original.size() != m * n) // 두 크기가 같지 않으면 변환 불가 return {}; vector> ans(m, vector(n, 0)); for (int ..
2024.06.18 -
(Easy - Arrays) Leetcode - 136. Single Number
주어진 배열에서 한 쌍이 아닌, 즉 같은 숫자가 존재하지 않는 숫자를 찾는 문제입니다.총 3가지 방식이 존재하는데 이 중 추가적인 조건인 linear runtime, 즉 시간 복잡도가 O(N)이고 추가적인 공간은 사용하지 말아야 합니다. 맵을 사용한 빈도수 확인 방식 nums 배열에 같은 숫자가 몇 개 있는지 확인하기 위해 정렬된 맵은 필요하지 않으므로 해시맵인 unordered_map을 사용했습니다. (해시맵이 key값으로 value를 찾는데 시간이 더 적게 걸립니다. Average: O(1))그리고 빈도수를 확인해 1번만 나왔다면 그 숫자가 답이 됩니다.이 방법은 O(N)의 시간복잡도를 가지지만 맵을 사용하기 위해 추가적인 공간이 필요해 문제의 조건을 만족할 수 없습니다.int singleNumber..
2024.06.17 -
(Easy - Arrays) Leetcode - 268. Missing Number
배열에는 0부터 n까지의 숫자가 저장되어 있지만 배열의 크기는 n과 같아 0부터 n까지의 숫자 중 배열에 없는 숫자가 존재하는데 이 배열에 없는 숫자를 찾아야합니다. 첫번째 풀이 제 첫번째 풀이는 정렬을 사용했습니다. 정렬을 하면 0부터 큰 숫자대로 정렬되기 때문에 index와 value가 같게됩니다.이때 index와 value가 다르면 그 index인 숫자가 배열에 없는 것 입니다.int missingNumber(vector& nums) { int n = nums.size(); std::sort(nums.begin(), nums.end()); // 정렬 for (int i = 0; i 두 번째 풀이 0부터 n까지의 숫자를 다 있는지 알아야 한다면 결..
2024.06.16 -
(Easy - Arrays) Leetcode - 217. Contains Duplicate
Leetcode의 Easy 문제 중 Array와 관련된 문제다. 간단한 문제로 배열에서 value가 한 번이라도 반복되면 true를 반환, 반복되는 값이 하나도 없다면 false를 반환하면 된다. 내 풀이는 먼저 정렬을 사용해 배열을 정렬해 준 뒤 한 번이상 반복되는 값을 찾아주는 것이다.bool containsDuplicate(vector& nums) { std::sort(nums.begin(), nums.end()); // sort for comparison for (int i = 1; i C++의 sort() 함수는 개선된 Quick Sort 알고리즘을 바탕으로 만들어져 O(n log n)의 시간복잡도를 보장한다.이후 nums의 개수만큼 loop를 한 번 돌려주면서 이전의 값과 비교해 ..
2024.06.13