리트코드(15)
-
[Leetcode/Medium] 세 수의 합 (15. 3Sum, Swift)
https://leetcode.com/problems/3sum/description/ 🤔 문제 설명배열 nums를 입력받아 합으로 0을 만들 수 있는 3개의 요소를 출력하세요.단, 결과 배열에는 동일한 요소가 들어가지 않으며, 중복된 삼중항이 포함되어서는 안 됩니다. nums = [-1,0,1,2,-1,-4]// [[-1,-1,2],[-1,0,1]] 💡 풀이일단 바로 생각나는 것은 반복문 3개를 중첩해서 사용하는 방법이었다.물론 그렇게 해도 올바른 답은 나오겠지만, 그 뻔한 방법 말고 지난번 풀이에서 사용했던 투 포인터 방법을 사용해볼려고 했다.순차적으로 들어온 nums 배열을 반복하면서 값을 하나 빼두고(i) 나머지 뒤의 값을 대상으로 앞 뒤에 포인터를 두어서sum값에 따라 음수라면 왼쪽에 있는 포..
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] 가장 긴 팰린드롬 부분 문자열 (5. Longest Palindrome Substring, Swift)
https://leetcode.com/problems/longest-palindromic-substring/description/ 🤔 문제 설명가장 긴 팰린드롬(Palindrome) 부분 문자열을 출력하세요.팰린드롬에 대한 설명은 2024.06.27 - [Algorithm] - [Leetcode/Easy] 유효한 팰린드롬 (125. Valid Palindrome, Swift) 글 참조s = "babad"// "bab" 💡 처음 생각한 풀이와 코드 (Swift ver.)가장 긴 부분의 팰린드롬을 찾는 문제이기 때문에 문장 전체부터 시작해 길이를 하나씩 줄여가면서 팰린드롬을 확인하는 방식을 생각했다.문제의 예시로 나와있는 "babad"로 설명을 들어보자면, 문장의 길이(=5) 기준으로 처음에는 인덱스 0..
2024.07.02 -
[Leetcode/Easy] 두 수의 합 (1. Two Sum, Swift)
https://leetcode.com/problems/two-sum/description/ 🤔 문제 설명덧셈하여 타깃 숫자를 만들 수 있는 배열의 두 숫자 인덱스를 반환하세요.입력된 nums에는 정확히 하나의 답이 있다고 가정하며, 또한 동일한 요소를 두 번 사용하지 않는다고 가정합니다.답은 임의의 순서로 반환할 수 있습니다.[2,7,11,15], target = 9// [0,1] 🧑🏻💻 첫 번째 풀이와 코드 (Swift ver.)단순하게 중첩 반복을 사용하기보다, 한 번의 반복에서 한 값을 가지고 target-num으로 나머지 한 값을 찾는 방법을 생각했다.값은 array.firstIndex(of: target-num) 문법을 사용해서 찾을 수 있었고,자기 자신을 찾는 경우는 생략하기 위해 조..
2024.07.01 -
[Leetcode/Medium] 로그 파일 재정렬 (937. Reorder Log Files, Swift)
https://leetcode.com/problems/reorder-data-in-log-files/description/ 🤔 문제 설명각 로그는 공백으로 구분된 단어 문자열이며, 여기서 첫 번째 단어는 식별자입니다.로그에는 문자 로그(식별자를 제외한 모든 단어는 소문자로 구성), 숫자 로그(식별자를 제외한 모든 단어는 숫자로 구성) 두 가지 유형이 있습니다.제공되는 로그 배열을 아래 규칙에 맞추어 재정렬하세요.문자로 구성된 로그는 모든 숫자 로그보다 앞에 와야 합니다.식별자는 순서에 영향을 끼치지 않지만, 문자가 동일한 경우에는 식별자에 따라 사전순으로 정렬합니다.단, 숫자 로그는 입력 순서대로 유지합니다.logs = ["dig1 8 1 5 1","let1 art can","dig2 3 6","let..
2024.06.29