본문 바로가기

Algorithm

(117)
[LeetCode] Python - 289. Game of Life https://leetcode.com/problems/game-of-life/ Game of Life - 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 생각 주어진 4개의 규칙을 차근차근 적용시키면 되는 문제입니다. 1. 살아있는 세포에 살아있는 이웃이 2개 미만 : 죽는다 2. 살아있는 세포에 살아 있는 이웃 2,3개 : 다음세대에 살아있다 3. 살아있는 세포에 살아있는 이웃 > 3 : 죽는다 4. 죽어있는 세포에 살아 있는 이웃이 3개면 : 다음 세대에 살아..
[LeetCode] Python - 937. Reorder Data in Log Files https://leetcode.com/problems/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 생각 파이썬에서는 sort에 key값을 지정하여 동일 조건일때 후순위 조건을 필터링 할 수 있다. 따라서 문자로그를 정렬할때 첫번째 기준으로 식별자를 제외한 나머지 문자를 사전순으로 정렬하고, 나머지 문자가 모두 동일하다면 식별자를 기준으로 정렬한다는 조건을 주었다...
[LeetCode] Python - 198. House Robber https://leetcode.com/problems/house-robber/ House Robber - 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 생각 도둑이 i번째 집을 터는경우, i번째 집을 털지 않는 경우로 이 두가지 경우로 나뉘어집니다. 일반화시키면, i번째와 그 이후의 원소들에 대한 부분 문제로 이루어져있습니다. 그렇기 때문에, Top-Down 방식으로 접근하여 DFS와 메모이제이션을 활용하여 풀었습니다. 1. base case는 인덱스가 0 보다..
[LeetCode] Python - 1466. Reorder Routes to Make All Paths Lead to the City Zero https://leetcode.com/problems/reorder-routes-to-make-all-paths-lead-to-the-city-zero/ Reorder Routes to Make All Paths Lead to the City Zero - 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 생각 DFS로 이웃한 노드들을 탐색하면서 현재 출발한 노드에서 0인 노드로 도착하면 True. 절대 도착하지 못하면 False. 이러한 로직을 갖고 구현하다가 실패..
[LeetCode] Python - 11. Container With Most Water https://leetcode.com/problems/container-with-most-water/ Container With Most 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 생각 투포인터를 잡아서 왼쪽 포인터와 오른쪽 포인터를 갱신해가면서 최대 영역값을 찾았습니다. 이때 언제 왼쪽 포인터와 오른쪽 포인터를 갱신해야하는지에 대한 아이디어 때문에 Greedy 문제로 분류된것 같습니다. 물의 영역은 두 막대의 최소 높이에 의해 결정됩니다. 따..
[LeetCode] Python - 74. Search a 2D Matrix https://leetcode.com/problems/search-a-2d-matrix/submissions/ Search a 2D Matrix - 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 생각 2차원 배열에서 target 원소가 있는지 확인하는 문제입니다. 이때 효율적인 알고리즘을 작성하라는게 문제의 핵심입니다. 주어진 조건에서, row들이 정렬되있기 때문에 처음 시도는 특정 행을 선택하여 그 행에서 이진탐색을 통해 M*O(logn) 의 시간복잡도를 가지..
[LeetCode] Python - 122. Best Time to Buy and Sell Stock II https://leetcode.com/problems/best-time-to-buy-and-sell-stock-ii/ Best Time to Buy and Sell Stock II - 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 생각 Best Time to Buy and Sell Stock 문제와 다르게 동일날짜에 주식을 사고 다시 팔수있는 조건이 추가되었다. 이 문제도 DP로 분류되어있어서 최대 수익을 찾기위해 DFS + DP 로 접근하였는데 단순하게 생각하..
[LeetCode] Python - 121. Best Time to Buy and Sell Stock https://leetcode.com/problems/best-time-to-buy-and-sell-stock/ Best Time to Buy and Sell Stock - 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 생각 수익을 최대화하기위한 서로 다른 두 날짜를 골라야하는 문제입니다. 문제 유형은 DP로 되어있지만, 슬라이딩 윈도우로 풀었습니다. 수익이 최대가 될려면 낮은가격에 사서 비싼가격에 팔아야 하므로, 투 포인터를 사용하여 왼쪽 포인터는 가격이 낮은..