알고리즘(45)
-
[Leetcode/Easy] 배열 파티션 1 (561. Array Partition 1, Swift)
https://leetcode.com/problems/array-partition/description/ 🤔 문제 설명2n개의 정수 배열이 주어지면, n개의 묶음 min(a, b)의 합으로 만들 수 있는 가장 큰 수를 출력하세요.nums = [1,4,3,2]// 4 : min(1, 2) + min(3, 4) = 1 + 3 = 4 💡 풀이# 첫 번째 생각정말 단순하게 생각해보면, 입력받은 nums 배열을 정렬시킨 후 앞에서부터 두 쌍씩 페어를 시켜준 다음, 각 묶음에서 최소값들의 합을 구하면 올바른 답이 도출될 것이다.# 두 번째 생각하지만 생각해보면, 결국 min 함수를 적용하지 않고도 리스트를 정렬시켰다면 인덱스 값에 의해 값을 도출할 수 있다.nums[0], nums[2], nums[4]....값..
2024.07.05 -
[Leetcode/Hard] 빗물 트래핑 (42. Trapping Rain Water, Swift)
https://leetcode.com/problems/trapping-rain-water/description/ 🤔 문제 설명각 막대의 너비가 1인 높이를 나타내는 음이 아닌 정수 리스트가 주어지면, 비가 온 후 얼마나 많은 물이 쌓일 수 있는지 계산하세요.height = [0,1,0,2,1,0,1,3,2,1,2,1]// 6 💡 풀이예전 수학 문제에서 이와 비슷한 문제를 본 경험이 떠올랐다.문제를 해결하기 위해 생각한 방법은 두 가지였다.하나는 양끝 지점에서 최댓값을 유지하며 좁혀 들어오는 방법, 또 하나는 앞에서부터 쭉 최댓값을 유지하며 값을 채우는 방법나는 이 중에서 전자의 방법을 사용했다. 전문 용어로 이렇게 양 끝 지점에서 범위를 갈수록 줄이는 방법을 "투 포인터"라고 부른다.일단, 그전에 h..
2024.07.04 -
[Leetcode/Medium] 그룹 애너그램 (49. Group Anagrams, Swift)
https://leetcode.com/problems/group-anagrams/description/ 🤔 문제 설명문자열 배열이 주어지면, 애너그램 단위로 그룹화하세요.애너그램(Anagram)이란 다른 단어나 구문의 글자를 재정렬하여 다른 뜻을 가진 단어로 바꾸는 것을 뜻합니다.(예시: '문전박대' -> '대박전문')strs = ["eat","tea","tan","ate","nat","bat"]// [["bat"],["nat","tan"],["ate","eat","tea"]] 💡 풀이입력으로 들어온 String Array를 반복하면서 해당 단어랑 같은 애너그램 단위로 그룹화할 수 있는 단어를 찾는 것이 이 문제의 핵심이었다.이때 단어를 sorted해주게 되면, 같은 애너그램 단위에서 나올 수 있는 ..
2024.06.30 -
[Leetcode/Easy] 가장 흔한 단어 (819. Most Common Word, Swift)
https://leetcode.com/problems/most-common-word/description/ 🤔 문제 설명paragraph에서 금지된 단어를 제외하고, 가장 빈번하게 등장하는 단어를 출력하세요.paragraph의 단어는 대소문자를 구분하지 않으며, 구두점(마침표, 쉼표 등) 또한 무시합니다. 답은 소문자로 반환해야 합니다.paragraph = "Bob hit a ball, the hit BALL flew far after it was hit."banned = ["hit"]// "ball" 💡 풀이사용되는 내부 메서드가 많아서 그렇지 풀이 과정은 단순하다.한 문장으로 되어있는 것을 단어별로 구분 -> 소문자 변환 + 구두점 무시 -> 단어별로 빈번 횟수 count -> 가장 많은 coun..
2024.06.29 -
[Leetcode/Easy] 문자열 뒤집기 (344. Reverse String, Swift)
https://leetcode.com/problems/reverse-string/description/ 🤔 문제 설명시간 복잡도 O(1)을 기준으로 해서 문자열을 뒤집는 함수를 작성하세요.단, 입력 문자열은 문자 배열로 주어지며, return 없이 리스트 내부를 직접 조작하는 방식으로 문제를 해결해야 합니다.["h","e","l","l","o"]# ["o","l","l","e","h"] 💡 풀이Swift의 기본 메서드(reversed)를 이용해서 아주 쉽게 해결할 수 있는 문제이다. 🧑🏻💻 코드 (Swift ver.)class Solution { func reverseString(_ s: inout [Character]) { s = s.reversed() }}
2024.06.28