코딩 테스트(10)
-
[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] 그룹 애너그램 (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