알고리즘/LeetCode 43

String to Integer (atoi)

LeetCode의 String to Integer (atoi) 문제다. String to Integer (atoi) - 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 단순히 주어진 문자열을 정수로 변환하는 것이 목적인데 파이썬에서는 그냥 int() 메서드로 문자열을 정수로 변환할 수 있다. 하지만 메서드의 매개변수로 전달되는 문자열은 올바른 문자열이어야 하기 때문에 문제에서 주어진 문자열을 필터링하는 과정이 필요하다. 문제에서 요구되는 조건은 다음과 같다. 문자..

Reorder Data in Log Files (Sort)

LeetCode의 Reorder Data in Log Files 문제다. Reorder Data in Log Files - 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배...). 그래도 파이썬 활용에 익숙해지고 정렬 메서드를 연습하는 김에 풀어보았다. 문제의 조건은 다음과 같다. 문제에서는 로그(문자열)..

Binary Tree Level Order Traversal (Queue)

LeetCode의 Binary Tree 튜토리얼의 첫 번째 섹션의 네 번째 문제인 Binary Tree Level Order Traversal다. 이전 Binary Tree Inorder Traversal (Stack) 포스트에서 간단하게 다루었던 Level-order 방식으로 탐색하는 문제다. 이는 같은 높이에 있는 모든 노드를 한 번에 탐색하는 것이기 때문에 약간 BFS와 유사하다고 볼 수 있다. 위처럼 여러 계층의 노드가 있을 때 첫 번째 계층에 있는 노드는 노드 1밖에 없기 때문에 이를 탐색하고 두 번째 계층에 있는 노드는 노드 2, 노드 3이 있기 때문에 이를 둘 다 탐색한다. 그리고 세 번째 계층에 있는 노드는 노드 4, 노드 5가 있기 때문에 역시 이를 둘 다 탐색한다. 이렇게 한 계층, 높..

Binary Tree Postorder Traversal (Stack)

LeetCode의 Binary Tree 튜토리얼 첫 번째 섹션의 네 번째 문제인 Binary Tree Postorder Traversal다. In-order, Pre-order와 다르게 오늘따라 집중이 더 잘 안돼서 그런가 몇 시간을 허비한 것 같다. 안 되겠어서 그냥 풀이를 찾아봤는데 재귀적인 방식으로 하면 간단하지만 이전처럼 스택을 활용해서 푸는 방법은 없을지 고민하고 찾아보다가 시간을 너무 낭비한 것 같다. 알고리즘은 이곳에서 참고했다. 하나의 스택과 두 개의 노드 포인터를 사용하는데 노드 포인터는 각각 현재 탐색하는 노드, 이전에 탐색했던 노드를 가리키고 있으며 좀 특이하게 두 노드 포인터의 상하 관계(부모, 자식 노드)가 자주 바뀌기 때문에 이해하기가 좀 어려웠던 것 같다. Iterative P..

Binary Tree Preorder Traversal (Stack)

LeetCode의 Binary Tree 튜토리얼을 시작하게 됐다. 그중 첫 번째 문제인 트리의 Pre-order 탐색을 구현하는 문제인 Binary Tree Preorder Traversal이다. 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 문제는 간단하다. 이전에 풀었던 Binary Tree Inorder Traversal (Stack)과 비슷하게..

Valid Palindrome (Deque)

드디어 파이썬 알고리즘 인터뷰 책을 좀 읽어보게 됐다. LeetCode에서 튜토리얼을 진행할 때는 자바로 했지만 프로그래머스나 혼자 풀 때는 파이썬 언어를 사용하고자 한다. 책에서 소개하는 문제들을 먼저 풀어보고 다른 사람들의 풀이나 책에 나온 내용들을 기반으로 개선방안을 학습하며 포스팅할 예정이다. 이번 문제는 LeetCode의 Easy 문제인 Valid Palindrome이다. Valid Palindrome - 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 ..

Keys and Rooms (BFS)

이번 문제는 LeetCode의 Queue, Stack 튜토리얼의 마지막 문제인 Keys and Rooms다. 문제의 조건은 다음과 같다. N개의 방이 주어지고 0번 방에서부터 시작한다. 이 방은 List 타입으로 주어진다. 각 방에는 다른 방으로 갈 수 있는 열쇠가 있다. 이 열쇠들은 List 타입으로 주어진다. 0번 방에서부터 시작하여 열쇠들을 이용하여 모든 방에 방문할 수 있는지 여부를 확인하라. 방 이동에 제약은 없으며 0번 방을 제외한 모든 방은 방문한 적이 없는 상태다. 각 방과 방에 들어있는 열쇠는 리스트로 주어지는데 예를 들어 [[1], [2], [3], []]처럼 주어진다면 이는 총 4개의 방이 있으며 0번 방에는 1번 열쇠가, 1번 방에는 2번 열쇠가, 2번 방에는 3번 열쇠가 들어있는 ..

01 Matrix (BFS)

LeetCode의 Queue, Stack 튜토리얼의 마지막 섹션의 5번째 문제인 01 Matrix다. 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 문제는 다음과 같다. 0과 1로 이루어진 2차원 배열이 주어진다. 인접한 두 셀의 거리는 1이다. 각 셀은 상하좌우로만 인접하고 있다. 각 셀에서 가장 가까운 0셀까지의 거리를 2차원 배열로 반환하라. 문..

Flood Fill (DFS)

LeetCode의 Queue, Stack 튜토리얼의 마지막 섹션의 세 번째 문제인 Flood Fill이다. 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 문제는 간단하다. 2차원 배열로 주어진 이미지 픽셀 값에 대하여 특정 위치의 좌표와 새로운 값을 주면 해당 좌표부터 시작해서 동서남북 4방향으로 탐색하며 시작 좌표와 동일한 값을 가진 픽셀을 새로운 ..

Decode String (Stack)

LeetCode의 Queue, Stack 튜토리얼의 마지막 섹션의 세 번째 문제인 Decode String이다. 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 일정한 규칙으로 주어진 문자열을 해독하는 것이 목적인데 문제의 규칙은 다음과 같다. 문자열에 k[encoded_string] 포맷이 있다면 encoded_string을 k번 반복해서 이어 붙인 ..