알고리즘 43

Array Partition I (Pythonic way)

LeetCode의 Array Partition I 문제다. Array Partition I - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 딱히 어려울 게 없는 문제지만 책에서 아주 인상적인 풀이를 제공했기 때문에 기록해두려고 한다. 문제 자체는 다음과 같이 간단하다. 2n개의 정수 목록이 주어진다. 정수들을 n개의 한 쌍으로 분리한다. 각 쌍의 최솟값의 합이 나타낼 수 있는 최댓값을 구하라. 쉽게 말해서 [1, 3, 2, 4]가 주어질 때 (1, 3), (2..

3Sum (Two Pointers)

LeetCode의 3Sum 문제다. 3Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 주어진 수 중에서 3개를 골라 합이 0인 조합을 반환하는 문제인데 중복된 조합은 반환하지 않아야 한다. 정수 배열은 10000개 까지 주어질 수 있기 때문에 최적화되지 않은 코드의 경우 시간 초과가 발생할 수 있다. 실제로 첫 번째로 구현한 아래 코드는 28번째 테스트 케이스에서 시간 초과 에러가 발생했다. class Solution: def threeSum(self,..

Trapping Rain Water (Two Pointers)

LeetCode의 Trapping Rain Water 문제다. Trapping Rain Water - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 처음으로 건드려보는 Hard 난이도의 문제다. 사실 Medium 문제도 혼자 힘으로 풀기 버거워서 Hard 난이도는 손대지 않고 있었는데 책에서 풀이를 알려주기 때문에 이를 공부하는 셈 치고 풀어보았다. 사실 직접 푼 것도 아니고 해설을 읽고 분석하는 정도지만 나중에 비슷한 문제가 나왔을 때 활용할 수 있을 것이다...

Two Sum (Dictionary)

LeetCode의 첫 번째 문제인 Two Sum이다. Two Sum - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 문제 자체는 간단하다. 정수 배열과 목푯값이 주어지고 해당 배열에서 두 수를 꺼내서 목푯값을 만들 수 있을 때 배열에서 두 수의 인덱스를 리스트로 반환하는 것이다. 예를 들어 [1, 2, 3, 4, 5]가 있고 6을 만들어야 할 때 [0, 4]를 반환하면 되는 것이다. 문제에서는 배열 내에 목푯값을 만들 수 있는 최소한 한 쌍의 정수가 존재한다고..

Longest Palindromic Substring

LeetCode의 Longest Palindromic Substring 문제다. Longest Palindromic Substring - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 제목 그대로 가장 긴 회문 문자열을 찾는 문제인데 이전에 풀어봤던 Valid Palindrome 문제에서 언급했듯이 Palindrome이란 회문으로 거꾸로 뒤집어도 동일한 문자열을 의미한다. 굳이 더 설명하진 않고 그러면 문자열에서 어떻게 회문을 탐색할 수 있는지 알아보자. 책에서..

Path Sum (Recursive)

LeetCode의 Binary Tree 튜토리얼 두 번째 섹션의 마지막 문제인 Path Sum이다. Account Login - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 트리의 루트 노드부터 자식 노드까지 탐색하면서 한 경로의 노드 값들을 합해서 특정 값을 만들 수 있는지 확인하는 문제다. 노드의 값과 합해서 만들어야 하는 값들은 음수 또는 양수 둘 다 될 수 있기 때문에 말단 노드까지 합해가면서 특정 값이 만들어졌는지 확인해야 한다. 그래서 재귀적으로 이..

Symmetric Tree (Recursive)

LeetCode의 Binary Tree 튜토리얼의 두 번째 섹션의 두 번째 문제인 Symmetric Tree다. Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 주어진 트리가 대칭 구조인지 판별하는 문제로 대칭 구조인 트리라는 것은 다음과 같은 트리를 의미한다. 마치 거울을 보는 것처럼 좌우반전을 해도 그 모양과 노드의 값이 동일한 트리를 대칭 트리라고..

Maximum Depth of Binary Tree (Recursive)

LeetCode의 Binary Tree 튜토리얼의 두 번째 섹션의 첫 번째 문제인 Maximum Depth of Binary Tree다. Explore - LeetCode LeetCode Explore is the best place for everyone to start practicing and learning on LeetCode. No matter if you are a beginner or a master, there are always new topics waiting for you to explore. leetcode.com 이진트리의 높이(또는 깊이)를 구하는 문제로 루트 노드부터 시작해서 가장 깊은 곳에 있는 자식 노드까지 몇 개의 노드를 거쳐가야 하는지 구하는 문제다. LeetCode의..

Group Anagrams

LeetCode의 Group Anagrams 문제다. Group Anagrams - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 주어진 문자열들에 대하여 애너그램에 해당하는 단어끼리 묶어서 리스트로 반환하는 것이 목적인데 처음에 생각한 것은 어차피 애너그램은 글자가 뒤죽박죽 섞여있더라도 결국 문자의 개수는 동일하기 때문에 이전 포스트에서 활용한 Counter 클래스를 이용하여 각 문자 별 빈도를 계산, 동일 여부로 계산하는 방법이었다. import collec..

Most Common Word

LeetCode의 Most Common Word 문제다. Most Common Word - LeetCode Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview. leetcode.com 이전 포스트에 이어 문자열 처리에 관련된 문제인데 문장을 단어 단위로 구분해야 하기 때문에 여간 까다로운 문제가 아니었다. 그래서인지 Easy 난이도임에도 불구하고 비추가 더 많은 것 같은데... 일단 결과적으로는 풀이를 참고했기 때문에 완전히 스스로의 힘으로 푼 건 아니지만 생각을 조금 전환할 수 있는 계기가 됐다. 문제는 ..