알고리즘
-
BST_Leetcode_98. Validate Binary Search Tree [swift]알고리즘/알고리즘 문제풀이 2025. 2. 19. 17:56
https://leetcode.com/problems/validate-binary-search-tree/description/?envType=study-plan-v2&envId=top-100-liked 문제접근모든 노드에 대해 중위순회하며 val을 array.append중복 값을 제거하고, sort하여 기존 값과 비교이렇게 해서 성능상 문제가 발생하면 다른 구현방법을 사용하려했었다.근데 문제가 널럴하였음아래는 다른 구현방법 문제 접근(반복문을 통해) 모든 노드에 대해 중위순회 시작. var current: Int에 node.val을 저장할 것current와 node.val을 비교, node.val > current이 아니라면, break. else current = node.val정답코드더보기/** * ..
-
dijkstra_Leetcode_743. Network Delay Time [swift]알고리즘/알고리즘 문제풀이 2025. 2. 19. 17:51
https://leetcode.com/problems/network-delay-time/description/ 문제접근그냥 다익스트라.하지만 꾸준히 복습하자 정답코드더보기더보기class Solution { func networkDelayTime(_ times: [[Int]], _ n: Int, _ k: Int) -> Int { var distance = [Int](repeating: Int.max, count: n) var graph: [Int: [(Int, Int)]] = [:] var queue: [(Int, Int)] = [] times.forEach { values in let source = values[0] ..
-
matrix_Leetcode_48. Rotate Image [swift]알고리즘/알고리즘 문제풀이 2025. 2. 19. 16:55
https://leetcode.com/problems/rotate-image/description/?envType=study-plan-v2&envId=top-100-liked 풀면서 이게 진짜 맞는 방법일까 의심을 정말 많이 한 문제문제접근특정 축 기준으로 대칭하는 방법이 있을것같은데,,, in-place 알고리즘 이라는 단서가 존재, 문제 내에서도 matrix의 새로운 instance의 생성을 금함.내부 변수를 교환해야하지만, swap할 경우 너무 복잡하므로, 변수하나를 선언하여 해당 공간에 일시 저장일시 저장한 데이터를 matrix의 적합한 좌표에 기입하고, 기입될 위치에 있던 값을 다시 일시저장정답코드더보기더보기class Solution { func rotate(_ matrix: inout [..
-
BinaryTree_Leetcode_543. Diameter of Binary Tree [swift]알고리즘/알고리즘 문제풀이 2025. 2. 18. 16:16
https://leetcode.com/problems/diameter-of-binary-tree/description/?envType=study-plan-v2&envId=top-100-liked 문제 접근꽤 쉽게 생각했다. // root기준으로 lhs rhs나누고 // depth를 둘 다 구해서 둘이 더해서 return오답 코드더보기/** * Definition for a binary tree node. * public class TreeNode { * public var val: Int * public var left: TreeNode? * public var right: TreeNode? * public init() { self.val = 0; self.left..
-
BinaryTree_Leetcode_226. Invert Binary Tree [swift]알고리즘/알고리즘 문제풀이 2025. 2. 18. 15:28
https://leetcode.com/problems/invert-binary-tree/description/?envType=study-plan-v2&envId=top-100-liked 문제접근간단하게 child의 위치를 서로 바꾸면 되는 문제정답코드더보기/** * Definition for a binary tree node. * public class TreeNode { * public var val: Int * public var left: TreeNode? * public var right: TreeNode? * public init() { self.val = 0; self.left = nil; self.right = nil; } * public init(_ v..
-
BinaryTree_Leetcode_108. Convert Sorted Array to Binary Search Tree [swift]알고리즘/알고리즘 문제풀이 2025. 2. 18. 15:26
https://leetcode.com/problems/convert-sorted-array-to-binary-search-tree/description/?envType=study-plan-v2&envId=top-100-liked 접근 방법 // even, odd 파악. odd인 경우, 중간의 값을 root. 이를 기준으로 좌우로 array를 나누어 lhs, rhs로 나눔 // 반복하여 tree구성. // even인 경우 중간의 두 개중 큰걸 쓰자. 123456789 // 5 // 3 8 // 2 4 7 9 // 1 6코드..
-
BinaryTree_Leetcode_Maximum Depth of Binary Tree [swift]알고리즘/알고리즘 문제풀이 2025. 2. 17. 17:08
https://leetcode.com/problems/maximum-depth-of-binary-tree/description/?envType=study-plan-v2&envId=top-100-liked 접근방법재귀탐색하여 하위 노드를 방문. 지나온 depth를 매개변수로 전달하위 노드가 존재하지 않으면 종료, depth와 sol을 비교하여 큰 값을 sol에 저장정답코드더보기더보기/** * Definition for a binary tree node. * public class TreeNode { * public var val: Int * public var left: TreeNode? * public var right: TreeNode? * public init() { se..
-
정렬_Programmers_가장 큰 수 [Swift]알고리즘/알고리즘 문제풀이 2025. 2. 17. 16:36
https://school.programmers.co.kr/learn/courses/30/lessons/42746?language=swift 프로그래머스SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프programmers.co.kr 풀어보려고 눌렀더니, 과거 기록이 있던 문제.이번에도 자력으로 푸는데 실패했다. 접근 방법numbers의 숫자를 선택하는 순서는 무관하므로, 뒤에서부터 원소를 꺼낸다.queue가 빌때까지 반복한다.queue의 마지막 원소를 꺼내고 solArray의 insert하는 모든 경우를 만들어내어 posibles에 저장한다.posibles의 각 원소를 joined하여 ["1","3","2"] 형태를 "132"로 바꾼다. join..