Skip to content

Commit 8c393a3

Browse files
authored
Merge pull request #1353 from HISEHOONAN/main
[HISEHOONAN] Week 04 Solutions
2 parents 9c3952c + a8d6085 commit 8c393a3

File tree

3 files changed

+111
-0
lines changed

3 files changed

+111
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
//๊ทธ๋ƒฅ ์ •๋ ฌ ํ•˜๊ณ  0๋ฒˆ์งธ ์ธ๋ฑ์Šค ์›์†Œ ์ถ”์ถœ
2+
//O(nlogn)
3+
// class Solution {
4+
// func findMin(_ nums: [Int]) -> Int {
5+
// var sortednums = nums.sorted()
6+
// return sortednums[0]
7+
// }
8+
// }
9+
10+
11+
//์ด์ง„ ํƒ์ƒ‰
12+
//๋ฐฐ์—ด์ด ๋‹ค ์ •๋ ฌ์ด ๋˜์–ด์•ผ ๊ฐ€๋Šฅํ•˜์ง€ ์•Š๋‚˜? ํ–ˆ๋Š”๋ฐ
13+
//์ด ๋ฌธ์ œ๋Š” 'ํšŒ์ „๋œ ์ •๋ ฌ ๋ฐฐ์—ด'์ด๋ผ์„œ ์ด์ง„ ํƒ์ƒ‰์ด ๊ฐ€๋Šฅํ•˜๋‹ค์บ„.
14+
//O(logn)
15+
class Solution {
16+
func findMin(_ nums: [Int]) -> Int {
17+
var left = 0
18+
var right = nums.count - 1
19+
20+
while left < right{
21+
var mid = (left+right)/2
22+
if nums[mid] > nums[right]{
23+
left = mid + 1
24+
}else{
25+
right = mid
26+
}
27+
}
28+
29+
return nums[left]
30+
}
31+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
//
2+
// Merge_Two_Sorted_Lists.swift
3+
// Algorithm
4+
//
5+
// Created by ์•ˆ์„ธํ›ˆ on 4/22/25.
6+
//
7+
8+
/**
9+
* Definition for a binary tree node.
10+
* public class TreeNode {
11+
* public var val: Int
12+
* public var left: TreeNode?
13+
* public var right: TreeNode?
14+
* public init() { self.val = 0; self.left = nil; self.right = nil; }
15+
* public init(_ val: Int) { self.val = val; self.left = nil; self.right = nil; }
16+
* public init(_ val: Int, _ left: TreeNode?, _ right: TreeNode?) {
17+
* self.val = val
18+
* self.left = left
19+
* self.right = right
20+
* }
21+
* }
22+
*/
23+
class Solution {
24+
func maxDepth(_ root: TreeNode?) -> Int {
25+
guard root != nil else { return 0 } //nil์ผ ๊ฒฝ์šฐ ๊นŠ์ด 0์œผ๋กœ ์ฒ˜๋ฆฌ
26+
27+
var leftdepth = maxDepth(root?.left) //์™ผ์ชฝ ๋…ธ๋“œ์˜ ๊นŠ์ด ํƒ์ƒ‰
28+
var rightdepth = maxDepth(root?.right) //์˜ค๋ฅธ์ชฝ ๋…ธ๋“œ์˜ ๊นŠ์ด ํƒ์ƒ‰
29+
30+
return max(leftdepth, rightdepth) + 1 //๋” ๊นŠ์€ ๊ณณ๊ณผ ์ž๊ธฐ ์ž์‹ ์„ ์œ„ํ•ด + 1์„ ํ•ด์„œ ๋ฆฌํ„ด.
31+
}
32+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
//
2+
// Merge_Two_Sorted_Lists.swift
3+
// Algorithm
4+
//
5+
// Created by ์•ˆ์„ธํ›ˆ on 4/22/25.
6+
//
7+
8+
/**
9+
* Definition for singly-linked list.
10+
* public class ListNode {
11+
* public var val: Int
12+
* public var next: ListNode?
13+
* public init() { self.val = 0; self.next = nil; }
14+
* public init(_ val: Int) { self.val = val; self.next = nil; }
15+
* public init(_ val: Int, _ next: ListNode?) { self.val = val; self.next = next; }
16+
* }
17+
*/
18+
class Solution {
19+
func mergeTwoLists(_ list1: ListNode?, _ list2: ListNode?) -> ListNode? {
20+
//list1, list2๊ฐ€ nil์ผ ๊ฒฝ์šฐ๋ฅผ ๋Œ€๋น„ํ•ด ์ „์ฒ˜๋ฆฌ
21+
guard list1 != nil else { return list2 }
22+
guard list2 != nil else { return list1 }
23+
24+
//์ดˆ๊ธฐํ™” Node
25+
var head : ListNode? = ListNode(0)
26+
27+
//์—ฐ์‚ฐ์„ ์œ„ํ•œ Node
28+
var current = head
29+
var l1 = list1
30+
var l2 = list2
31+
32+
while l1 != nil && l2 != nil{ //๋‘ ๋ฆฌ์ŠคํŠธ ๋ชจ๋‘ nil์ด ์•„๋‹ ๊ฒฝ์šฐ์—๋งŒ ์—ฐ์‚ฐ.
33+
if let val1 = l1?.val, let val2 = l2?.val{ //๋น„๊ตํ•  node๋ฅผ ๊ฐ๊ฐ list1?.val, list2?.val๋กœ ์•ˆ์ „ํžˆ ๋ฐ”์ธ๋”ฉ
34+
if val1 < val2{ //๋‘ ์ˆ˜ ๋น„๊ต
35+
current?.next = ListNode(val1) //reusltNode์˜ ๋‹ค์Œ์„ ์ž‘์€์ˆ˜๋กœ ์„ค์ •
36+
l1 = l1?.next //์—ฐ์‚ฐ ํ›„ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ๋„˜๊น€
37+
}else{
38+
current?.next = ListNode(val2) //reusltNode์˜ ๋‹ค์Œ์„ ์ž‘์€์ˆ˜๋กœ ์„ค์ •
39+
l2 = l2?.next //์—ฐ์‚ฐ ํ›„ ๋‹ค์Œ ๋…ธ๋“œ๋กœ ๋„˜๊น€
40+
}
41+
current = current?.next //์—ฐ์‚ฐ ํ›„ ๊ฒฐ๊ณผ ๋…ธ๋“œ๋„ ๋‹ค์Œ์œผ๋กœ ๋„˜๊น€
42+
}
43+
}
44+
current?.next = l1 ?? l2 //while์ด ๋๋‚œ ํ›„ ๋‚จ์€ ๋…ธ๋“œ๋Š” ๋’ค์— ๋ถ™ํž˜
45+
46+
return head?.next
47+
}
48+
}

0 commit comments

Comments
ย (0)