본문 바로가기

Algorithm

(117)
[LeetCode] Python - 207. Course Schedule https://leetcode.com/problems/course-schedule/ Course Schedule - 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 생각 예전에 SWEA에서 비슷한 문제를 풀었던것 같은데 다시 풀어도 어려운 문제같습니다. DFS +백트래킹으로 노드들을 탐색했습니다. 선수 과목을 들어야만 다음 과목을 들을 수 있기 때문입니다. (위상 정렬을 통해 문제를 풀 수 있다고 합니다.) 1. prerequisites에 대한 dictionary..
[LeetCode] Java - 36. Valid Sudoku https://leetcode.com/problems/valid-sudoku/ Valid Sudoku - 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차원 배열 형태로 스도쿠의 정보가 주어졌을때, 올바른 스도쿠인지 판단하는 문제입니다. 숫자가 없는 칸이 존재하기때문에 올바른 스도쿠인지 판단하기 위해 다음과 같이 확인하였습니다. 1. 가로방향 1~9가 중복되었는지 체크한다. 2. 세로방향 1~9가 중복되었는지 체크한다. 3. 3*3 영역에서 1~9가 중복..
[LeetCode] Java, Python - 743. Network Delay Time https://leetcode.com/problems/network-delay-time/ Network Delay Time - 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 생각 모든 노드를 방문하고 가장 오래 걸리는 노드까지의 최단 비용을 구하기 위해 다익스트라 알고리즘을 사용하여 풀었습니다. 다익스트라 알고리즘을 구현하기위해 최소힙을 사용하여 문제를 풀었는데, heapq는 첫번째 요소를 기준으로 힙 정렬을 해줍니다. 저는 여기서 (노드, 비용) 이렇게 설정해..
[LeetCode] Python - 129. Sum Root to Leaf Numbers https://leetcode.com/problems/sum-root-to-leaf-numbers/ Sum Root to Leaf Numbers - 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 생각 Leetcode 트리 문제를 계속 풀다보니 base case만 잘 생각해내면 된다라는 자신감을 얻었습니다ㅎㅎ leaf node까지 가면서 거쳐온 노드들을 차례대로 붙여준다음 이를 누적합으로 계산하는 문제입니다. 다음 레벨로 갈 경우 현재까지 거쳐온 비용*10을 하여..
[LeetCode] Python - 100. Same Tree https://leetcode.com/problems/same-tree/ Same Tree - 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 생각 트리가 같은지를 비교하려면 각각의 트리를 왼쪽의 서브트리, 오른쪽 서브트리가 동일한지를 판단하면 된다. 이를 재귀함수로 isSameTree(p의 왼쪽 서브트리, q의 왼쪽 서브트리) and isSameTree(p의 오른쪽 서브트리, q의 오른쪽 서브트리)로 판단할 수 있다. 이때 기저조건은 두가지가 있다. 첫번째, 양..
[LeetCode] Python - 102. Binary Tree Level Order Traversal https://leetcode.com/problems/binary-tree-level-order-traversal/ Binary Tree Level Order Traversal - 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 생각 이진 트리를 BFS 방식으로 탐색하는 문제입니다. 파이썬에서 BFS와 같이 큐를 사용해야할때 deque 자료구조를 사용하여 풀었습니다. deque는 스택과 큐가 합쳐진 자료구조인데, pop 연산의 시간복잡도가 O(1) 이어서 코딩테스..
[LeetCode] Python - 230. Kth Smallest Element in a BST https://leetcode.com/problems/kth-smallest-element-in-a-bst/ Kth Smallest Element in a BST - 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 생각 BST는 왼쪽 자식노드는 루트노드보다 작고, 오른쪽 자식노드는 루트노드보다 큰 노드들로 이루어진 트리입니다. (일반화하면, 왼쪽 서브트리 루트 노드 -> 오른쪽 ..
[LeetCode] Python - 202. Happy Number https://leetcode.com/problems/happy-number/ Happy Number - 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 생각 leetcode에서 같은 easy라도 난이도가 천차만별인것같다. 근데 이 문제는 가볍게 풀려서 정말 행복한 문제 주어진 예시에서 n=19일때를 모두 손으로 써보면 1이 되므로 True임을 알 수 있다. 그렇다면, 언제 False가 되는지를 알아야 한다. n=2 일때를 계속 써보면 2, 4 , 16 , 37,..