Skip to content

Commit 706ef6d

Browse files
authored
Merge pull request #1574 from KwonNayeon/main
2 parents 83dde58 + 854537f commit 706ef6d

File tree

2 files changed

+77
-45
lines changed

2 files changed

+77
-45
lines changed

โ€Žmissing-number/KwonNayeon.py

Lines changed: 15 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,24 +5,29 @@
55
3. Each element nums[i] is between 0 and n inclusive
66
4. All numbers in nums are unique (no duplicates)
77
8+
<Solution 1>
89
Time Complexity: O(nlogn)
9-
- ์ •๋ ฌ์— nlogn, ์ˆœํšŒ์— n์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ „์ฒด์ ์œผ๋กœ O(nlogn)
10+
- ์ •๋ ฌ์— nlogn, ์ˆœํšŒ์— n์ด ํ•„์š”ํ•˜๋ฏ€๋กœ ์ „์ฒด์ ์œผ๋กœ O(nlogn)
11+
1012
Space Complexity: O(1)
11-
- ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ ๋ฐฐ์—ด๋งŒ ์‚ฌ์šฉ
13+
- ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ ๋ฐฐ์—ด๋งŒ ์‚ฌ์šฉ
1214
1315
ํ’€์ด ๋ฐฉ๋ฒ•:
14-
1. ๋ฐฐ์—ด์„ ์ •๋ ฌํ•˜์—ฌ 0๋ถ€ํ„ฐ n๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ์žˆ์–ด์•ผ ํ•  ์œ„์น˜์— ์—†๋Š” ์ˆซ์ž๋ฅผ ์ฐพ์Œ
15-
2. ์ธ๋ฑ์Šค์™€ ํ•ด๋‹น ์œ„์น˜์˜ ๊ฐ’์„ ๋น„๊ตํ•˜์—ฌ ๋‹ค๋ฅด๋‹ค๋ฉด ๊ทธ ์ธ๋ฑ์Šค๊ฐ€ missing number
16-
3. ๋ชจ๋“  ์ธ๋ฑ์Šค๋ฅผ ํ™•์ธํ–ˆ๋Š”๋ฐ๋„ ์—†๋‹ค๋ฉด n์ด missing number
16+
1. nums ๋ฐฐ์—ด์„ ์˜ค๋ฆ„์ฐจ์ˆœ์œผ๋กœ ์ •๋ ฌ
17+
2. 0๋ถ€ํ„ฐ n-1๊นŒ์ง€ ์ˆœ์„œ๋Œ€๋กœ ๋น„๊ตํ•˜์—ฌ ์ธ๋ฑ์Šค์™€ ๋‹ค๋ฅธ ๊ฐ’์„ ์ฐพ์Œ
18+
- ์ธ๋ฑ์Šค์™€ ํ•ด๋‹น ์œ„์น˜์˜ ๊ฐ’์ด ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ, ๊ทธ ์ธ๋ฑ์Šค๊ฐ€ missing number
1719
"""
18-
1920
class Solution:
2021
def missingNumber(self, nums: List[int]) -> int:
22+
n = len(nums)
2123
nums.sort()
2224

23-
for i in range(len(nums)):
24-
if nums[i] != i:
25+
for i in range(n):
26+
if i == nums[i]:
27+
continue
28+
else:
2529
return i
26-
27-
return len(nums)
30+
# missing number๊ฐ€ ๋ฐฐ์—ด์˜ ๋งˆ์ง€๋ง‰์— ์˜ค๋Š” ๊ฒฝ์šฐ
31+
return n
32+
2833

โ€Žreorder-list/KwonNayeon.py

Lines changed: 62 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -7,18 +7,21 @@
77
- ๋ฆฌ์ŠคํŠธ๋ฅผ ํ•œ ๋ฒˆ์”ฉ ์ˆœํšŒํ•˜๋ฉด์„œ ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๊ฐ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•จ
88
99
Space Complexity: O(1)
10-
- ์ •ํ•ด์ง„ ๊ฐœ์ˆ˜์˜ ๋ณ€์ˆ˜ ์™ธ์—๋Š” ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
10+
- ์ •ํ•ด์ง„ ๋ณ€์ˆ˜ ์™ธ์—๋Š” ์ถ”๊ฐ€ ๊ณต๊ฐ„์„ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Œ
1111
1212
ํ’€์ด๋ฐฉ๋ฒ•:
1313
1. ์ค‘๊ฐ„ ์ง€์  ์ฐพ๊ธฐ
14-
- slow/fast ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๊ฐ„ ์ง€์  ์ฐพ๊ธฐ
14+
- slow/fast ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ค‘๊ฐ„ ์ง€์  ์ฐพ๊ธฐ
1515
2. ๋’ท๋ถ€๋ถ„ ๋’ค์ง‘๊ธฐ
16-
- prev, curr ํฌ์ธํ„ฐ๋กœ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ๋ฐฉํ–ฅ ์ „ํ™˜
17-
- next_temp์— ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•œ ํ›„ ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ
16+
- prev, curr ํฌ์ธํ„ฐ๋กœ ๋งํฌ๋“œ ๋ฆฌ์ŠคํŠธ์˜ ๋ฐฉํ–ฅ ์ „ํ™˜
17+
- next_temp์— ๋‹ค์Œ ๋…ธ๋“œ๋ฅผ ์ €์žฅํ•œ ํ›„ ๋ฐฉํ–ฅ ๋ณ€๊ฒฝ
1818
3. ์•ž๋ถ€๋ถ„๊ณผ ๋’ท๋ถ€๋ถ„ ํ•ฉ์น˜๊ธฐ
19-
- ๋‘ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ (first, second)๋ถ€ํ„ฐ ์‹œ์ž‘
20-
- temp1, temp2์— ๋‹ค์Œ ๋…ธ๋“œ ์ €์žฅ
21-
- ํฌ์ธํ„ฐ๋“ค์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์—ฐ๊ฒฐํ•จ
19+
- ๋‘ ๋ฆฌ์ŠคํŠธ์˜ ์‹œ์ž‘์ (first, second)๋ถ€ํ„ฐ ์‹œ์ž‘
20+
- temp1, temp2์— ๋‹ค์Œ ๋…ธ๋“œ ์ €์žฅ
21+
- ํฌ์ธํ„ฐ๋“ค์„ ๋ฒˆ๊ฐˆ์•„๊ฐ€๋ฉฐ ์—ฐ๊ฒฐํ•จ
22+
23+
๋…ธํŠธ:
24+
- ํฌ์ธํ„ฐ ์กฐ์ž‘(์—ฐ๊ฒฐ๋ฆฌ์ŠคํŠธ ๋’ค์ง‘๊ธฐ, ๋ณ‘ํ•ฉ) ๋ฐฉ๋ฒ•์„ ๋‹ค ๊นŒ๋จน์–ด์„œ ๋ณต์Šต์šฉ ์˜ˆ์‹œ ์ฃผ์„์„ ์ถ”๊ฐ€ํ•ด๋‘ 
2225
"""
2326
# Definition for singly-linked list.
2427
# class ListNode:
@@ -27,37 +30,61 @@
2730
# self.next = next
2831
class Solution:
2932
def reorderList(self, head: Optional[ListNode]) -> None:
30-
"""
31-
Do not return anything, modify head in-place instead.
32-
"""
33-
# ์ค‘๊ฐ„ ์ง€์  ์ฐพ๊ธฐ
34-
slow = head
35-
fast = head
33+
# ์ดˆ๊ธฐ ์ƒํƒœ: 1->2->3->4->5
34+
35+
# 1๋‹จ๊ณ„: ์ค‘๊ฐ„ ์ง€์  ์ฐพ๊ธฐ
36+
slow = head # slow = 1
37+
fast = head # fast = 1
3638
while fast and fast.next:
37-
slow = slow.next
38-
fast = fast.next.next
39-
40-
# ๋’ท๋ถ€๋ถ„ ๋’ค์ง‘๊ธฐ
41-
prev = None
42-
curr = slow.next
43-
slow.next = None
39+
slow = slow.next # slow: 1->2->3
40+
fast = fast.next.next # fast: 1->3->5->None
41+
# ๊ฒฐ๊ณผ: slow๋Š” 3์— ์œ„์น˜
42+
43+
# 2๋‹จ๊ณ„: ๋’ท๋ถ€๋ถ„ ๋’ค์ง‘๊ธฐ
44+
prev = None # prev = None
45+
curr = slow.next # curr = 4 (๋’ท๋ถ€๋ถ„ ์‹œ์ž‘์ )
46+
slow.next = None # ๋ถ„๋ฆฌ: 1->2->3 | 4->5
47+
4448
while curr:
45-
next_temp = curr.next
46-
curr.next = prev
47-
prev = curr
48-
curr = next_temp
49+
# 1ํšŒ์ „: curr=4, prev=None
50+
next_temp = curr.next # next_temp = 5
51+
curr.next = prev # 4->None
52+
prev = curr # prev = 4
53+
curr = next_temp # curr = 5
54+
# ์ƒํƒœ: 1->2->3 | 4->None, curr=5
4955

50-
# ์•ž๋ถ€๋ถ„๊ณผ ๋’ท๋ถ€๋ถ„ ํ•ฉ์น˜๊ธฐ
51-
first = head
52-
second = prev
56+
# 2ํšŒ์ „: curr=5, prev=4
57+
next_temp = curr.next # next_temp = None
58+
curr.next = prev # 5->4
59+
prev = curr # prev = 5
60+
curr = next_temp # curr = None (์ข…๋ฃŒ)
61+
# ์ƒํƒœ: 1->2->3 | 5->4->None
62+
63+
# 3๋‹จ๊ณ„: ์•ž๋ถ€๋ถ„๊ณผ ๋’ท๋ถ€๋ถ„ ํ•ฉ์น˜๊ธฐ
64+
first = head # first = 1->2->3
65+
second = prev # second = 5->4
66+
5367
while second:
54-
temp1 = first.next
55-
temp2 = second.next
68+
# 1ํšŒ์ „: first=1, second=5
69+
temp1 = first.next # temp1 = 2
70+
temp2 = second.next # temp2 = 4
5671

57-
first.next = second
58-
second.next = temp1
72+
first.next = second # 1->5
73+
second.next = temp1 # 5->2
74+
# ํ˜„์žฌ ์ƒํƒœ: 1->5->2->3, ๋‚จ์€ second = 4
5975

60-
first = temp1
61-
second = temp2
62-
63-
76+
first = temp1 # first = 2
77+
second = temp2 # second = 4
78+
79+
# 2ํšŒ์ „: first=2, second=4
80+
temp1 = first.next # temp1 = 3
81+
temp2 = second.next # temp2 = None
82+
83+
first.next = second # 2->4
84+
second.next = temp1 # 4->3
85+
# ํ˜„์žฌ ์ƒํƒœ: 1->5->2->4->3
86+
87+
first = temp1 # first = 3
88+
second = temp2 # second = None (์ข…๋ฃŒ)
89+
90+
# ์ตœ์ข… ๊ฒฐ๊ณผ: 1->5->2->4->3

0 commit comments

Comments
ย (0)