Skip to content

Commit 6646be1

Browse files
authored
[hj4645] WEEK 02 solutions
[hj4645] WEEK 02 solutions
2 parents b6da95b + d0b5249 commit 6646be1

File tree

4 files changed

+105
-0
lines changed

4 files changed

+105
-0
lines changed

โ€Ž3sum/hj4645.pyโ€Ž

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
class Solution:
2+
def threeSum(self, nums: List[int]) -> List[List[int]]:
3+
nums.sort() # ๋ฐฐ์—ด ์ •๋ ฌํ•ด์„œ ์ค‘๋ณต ์ฒ˜๋ฆฌ์™€ ํˆฌ ํฌ์ธํ„ฐ์— ์œ ๋ฆฌํ•˜๊ฒŒ ๋งŒ๋“ฆ
4+
n = len(nums)
5+
answer = []
6+
7+
for i in range(n - 2):
8+
# i๊ฐ€ 0์ด ์•„๋‹ˆ๋ฉด์„œ ์ด์ „ ๊ฐ’๊ณผ ๊ฐ™์œผ๋ฉด ์ค‘๋ณต ๋ฐฉ์ง€๋ฅผ ์œ„ํ•ด ๊ฑด๋„ˆ๋œ€
9+
if i > 0 and nums[i] == nums[i - 1]:
10+
continue
11+
12+
left, right = i + 1, n - 1
13+
14+
while left < right:
15+
total = nums[i] + nums[left] + nums[right]
16+
17+
if total == 0:
18+
answer.append([nums[i], nums[left], nums[right]])
19+
20+
# left์™€ right๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ’์ด ์ค‘๋ณต์ด๋ฉด ๋„˜์–ด๊ฐ
21+
while left < right and nums[left] == nums[left + 1]:
22+
left += 1
23+
while left < right and nums[right] == nums[right - 1]:
24+
right -= 1
25+
26+
left += 1
27+
right -= 1
28+
elif total < 0:
29+
left += 1
30+
else:
31+
right -= 1
32+
33+
return answer

โ€Žclimbing-stairs/hj4645.ktโ€Ž

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
class Solution {
2+
// ์ •์ƒ๊นŒ์ง€ n๊ฑธ์Œ์ด ์†Œ๋ชจ๋œ๋‹ค๊ณ  ํ•  ๋•Œ, n์„ ๊ตฌํ•  ์ˆ˜ ์žˆ๋Š” ์ค‘๋ณต๋˜์ง€ ์•Š๋Š” ๊ฒฝ์šฐ์˜ ์ˆ˜๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฌธ์ œ
3+
// ๊ณ„๋‹จ์€ 1๊ฑธ์Œ์ด๋‚˜ 2๊ฑธ์Œ์”ฉ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค.
4+
fun climbStairs(n: Int): Int {
5+
// ๊ณ„๋‹จ์ด 1๊ฐœ๋ผ๋ฉด ๋ฌด์กฐ๊ฑด 1์„ ๋ฐ˜ํ™˜
6+
if(n == 1) return 1
7+
// ์ˆซ์ž๋กœ ๋œ ๋ฐฐ์—ด์„ ์„ ์–ธ(ํŽธ์˜์ƒ 1๋ฒˆ์งธ ๊ณ„๋‹จ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋„๋ก n+1๋กœ ์„ ์–ธ)
8+
val dp = IntArray(n + 1)
9+
// ์ฒซ๋ฒˆ์งธ ๊ณ„๋‹จ์„ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ 1๊ฐ€์ง€
10+
dp[1] = 1
11+
// ๋‘๋ฒˆ์งธ ๊ณ„๋‹จ๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€(1+1, 2)
12+
dp[2] = 2
13+
14+
//์ด์ œ 3๋ฒˆ์งธ ๊ณ„๋‹จ๋ถ€ํ„ฐ n๋ฒˆ์งธ ๊ณ„๋‹จ์ธ ์ •์ƒ๊นŒ์ง€ ์˜ฌ๋ผ๊ฐ€๋Š” ๋ฐฉ๋ฒ•์„ ๊ณ„์‚ฐ
15+
for(i in 3..n){
16+
dp[i] = dp[i - 1] + dp[i - 2]
17+
}
18+
return dp[n]
19+
}
20+
}
21+
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
class Solution:
2+
# ์ •์ˆ˜ ๋ฐฐ์—ด์— ๋Œ€ํ•ด answer ๋ฐฐ์—ด์„ ๋ฐ˜ํ™˜
3+
# 1. ์ •๋‹ต ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ์š”์†Œ๋Š” ์ •์ˆ˜ ๋ฐฐ์—ด์˜ i๋ฒˆ์งธ ์š”์†Œ๋ฅผ ์ œ์™ธํ•œ ๋‹ค๋ฅธ ๋ชจ๋“  ์š”์†Œ์˜ ๊ณฑ
4+
# 2. ์‹œ๊ฐ„๋ณต์žก๋„๋Š” O(n) ์ด๋‚ด๋กœ ํ•ด๊ฒฐ ํ•„์š”
5+
def productExceptSelf(self, nums: List[int]) -> List[int]:
6+
length = len(nums)
7+
answer = [1] * length # 1๋กœ ์ดˆ๊ธฐํ™”
8+
9+
# ์™ผ์ชฝ ๊ณฑ ๊ณ„์‚ฐ ํ›„ answer์— ์ €์žฅ
10+
left = 1
11+
for i in range(length):
12+
answer[i] = left
13+
left *= nums[i]
14+
15+
# ์˜ค๋ฅธ์ชฝ ๊ณฑ์„ ๋ˆ„์ ํ•˜๋ฉด์„œ answer์— ๊ณฑํ•˜๊ธฐ
16+
right = 1
17+
for i in range(length - 1, -1, -1):
18+
answer[i] *= right
19+
right *= nums[i]
20+
21+
return answer
22+

โ€Žvalid-anagram/hj4645.ktโ€Ž

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
class Solution {
2+
// t๊ฐ€ s์˜ ์ฒ ์ž๋ฅผ ๋ชจ๋‘ ํฌํ•จํ•˜๊ณ  ์žˆ๋Š” ์• ๋„ˆ๊ทธ๋žจ์ธ์ง€๋ฅผ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ
3+
// ํ‘ธ๋Š” ๋ฐฉ๋ฒ•์€ 2๊ฐ€์ง€
4+
// 1. ์œ ๋‹ˆ์ฝ”๋“œ๋กœ ๋ณ€ํ™˜ํ•ด์„œ sort ํ•ด์„œ ํ‘ธ๋Š” ๋ฐฉ๋ฒ•
5+
// 2. ์ •๋ ฌํ•˜์ง€ ์•Š๊ณ  mutableMap์œผ๋กœ ๋งต์„ ๋งŒ๋“ค์–ด ํ‘ธ๋Š” ๋ฐฉ๋ฒ•
6+
// 2๋ฒˆ์œผ๋กœ ๋ฌธ์ œ๋ฅผ ํ’€์—ˆ๋‹ค.
7+
fun isAnagram(s: String, t: String): Boolean {
8+
//์šฐ์„  ์ฒ˜์Œ๋ถ€ํ„ฐ ๋‘ String์˜ ๊ธธ์ด๊ฐ€ ๋‹ค๋ฅด๋ฉด ๋ฐ”๋กœ false๋ฅผ ๋ฐ˜ํ™˜
9+
if(s.length != t.length) false
10+
11+
// s์˜ ๋ฌธ์ž์—ด์„ ์นด์šดํŠธํ•˜๋ฉด์„œ ์ €์žฅํ•  ๊ฐ€๋ณ€๋ฐฐ์—ด์„ ์„ ์–ธํ•ด์ค€๋‹ค.
12+
val countMap = mutableMapOf<Char, Int>()
13+
14+
// s์— ์žˆ๋Š” ๊ฐ๊ฐ์˜ ๋ฌธ์ž๋“ค์— ๋Œ€ํ•ด์„œ ๋ฐ˜๋ณต๋ฌธ์„ ๋Œ๋ฉด์„œ ์ถœํ˜„ํšŸ์ˆ˜๋ฅผ ๋งต์œผ๋กœ ๊ตฌ์„ฑ
15+
for(c in s){
16+
countMap[c] = countMap.getOrDefault(c, 0) + 1
17+
}
18+
19+
// ์ด์ œ t์˜ ๋ฌธ์ž๋“ค์ด ์•„๊นŒ ๋งŒ๋“ค์–ด์ง„ countMap์— ๋ชจ๋‘ ์กด์žฌํ•˜๋Š”์ง€ ํ™•์ธ
20+
for(c in t){
21+
val count = countMap.getOrDefault(c, 0)
22+
if (count == 0) return false
23+
countMap[c] = count - 1
24+
}
25+
// countMap์— ๋“ค์–ด์žˆ๋Š” value๊ฐ€ ์ „๋ถ€ 0์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜
26+
return countMap.values.all { it == 0 }
27+
}
28+
}
29+

0 commit comments

Comments
ย (0)