Skip to content

Commit 5c20c88

Browse files
authored
Merge pull request #2515 from sadie100/main
[sadie100] WEEK 06 Solutions
2 parents 42d1f47 + 6e422c0 commit 5c20c88

3 files changed

Lines changed: 93 additions & 0 deletions

File tree

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/*
2+
์‹œ์ž‘์ธ๋ฑ์Šค start์™€ ๋์ธ๋ฑ์Šค end๋ฅผ ์ง€์ •ํ•˜๊ณ  result ๋ณ€์ˆ˜๋ฅผ ๊ฐฑ์‹ , start์™€ end๋ฅผ ์ขํ˜€๊ฐ€๋ฉฐ ์ตœ๋Œ€ result๋ฅผ ์ฐพ๋Š”๋‹ค
3+
- start์™€ end ์ค‘ ๋” ์ž‘์€ ๊ฐ’์„ ์˜ฎ๊ฒจ๊ฐ€๋ฉฐ ๊ฐ’์„ ๋น„๊ต.
4+
- ๋‘˜์ด ๊ฒน์ณ์ง€๋ฉด ๋ฆฌํ„ดํ•œ๋‹ค.
5+
6+
result๋ฅผ ๋ฆฌํ„ด
7+
8+
์‹œ๊ฐ„๋ณต์žก๋„ : O(N), ๊ณต๊ฐ„๋ณต์žก๋„ : O(1)
9+
*/
10+
11+
function maxArea(height: number[]): number {
12+
let start = 0
13+
let end = height.length - 1
14+
let result = 0
15+
16+
function getAmount(startIdx: number, endIdx: number): number {
17+
return (endIdx - startIdx) * Math.min(height[endIdx], height[startIdx])
18+
}
19+
20+
while (start < end) {
21+
const area = getAmount(start, end)
22+
result = Math.max(result, area)
23+
24+
if (height[start] < height[end]) {
25+
start += 1
26+
} else {
27+
end -= 1
28+
}
29+
}
30+
31+
return result
32+
}
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
/**
2+
์ด๋ถ„ํƒ์ƒ‰์œผ๋กœ ์ •๋ ฌ ํƒ์ƒ‰. ์ตœ์†Œ๊ฐ’์ด ๋“ค์–ด์žˆ๋Š” ๋ฒ”์œ„๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ๊ณ„์† ์ขํ˜€ ๊ฐ„๋‹ค
3+
์ค‘๊ฐ„๊ฐ’์„ ๊ธฐ์ค€๊ฐ’์œผ๋กœ ์žก๊ณ , ๋งˆ์ง€๋ง‰ ๊ฐ’๋ณด๋‹ค ํฐ์ง€ ์ž‘์€์ง€ ํ™•์ธํ•œ๋‹ค
4+
๊ธฐ์ค€๊ฐ’์ด ๋งˆ์ง€๋ง‰ ๊ฐ’๋ณด๋‹ค ์ž‘์„ ๊ฒฝ์šฐ, ์ตœ์†Œ๊ฐ’์€ ์™ผ์ชฝ ๋ฐ˜์ชฝ์— ์žˆ๊ฑฐ๋‚˜ ๊ธฐ์ค€๊ฐ’์ž„. ex) 5 1 2 3 4
5+
-> range๋ฅผ ์™ผ์ชฝ ๋ฐ˜์ชฝ์œผ๋กœ ์ค„์ด๊ณ (๊ธฐ์ค€๊ฐ’ ํฌํ•จ) ํ•ด๋‹น ์ค‘๊ฐ„๊ฐ’์„ ๊ธฐ์ค€๊ฐ’์œผ๋กœ ์žก๋Š”๋‹ค
6+
๊ธฐ์ค€๊ฐ’์ด ๋งˆ์ง€๋ง‰ ๊ฐ’๋ณด๋‹ค ํด ๊ฒฝ์šฐ, ์ตœ์†Œ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ ๋ฐ˜์ชฝ์— ์žˆ์Œ. ex) 3 4 5 1 2
7+
-> range๋ฅผ ์˜ค๋ฅธ์ชฝ ๋ฐ˜์ชฝ์œผ๋กœ ์ค„์ด๊ณ  ํ•ด๋‹น ์ค‘๊ฐ„๊ฐ’์„ ๊ธฐ์ค€๊ฐ’์œผ๋กœ ์žก๋Š”๋‹ค
8+
9+
์ตœ์ข…์ ์œผ๋กœ start, end๊ฐ€ ๊ฐ™์•„์ง€๋Š” ๊ฐ’์ด ์ตœ์†Œ๊ฐ’์ด ๋œ๋‹ค.
10+
11+
์‹œ๊ฐ„๋ณต์žก๋„ : O(LogN) -> N์€ nums์˜ ๊ฐœ์ˆ˜. ์ด๋ถ„ํƒ์ƒ‰
12+
*/
13+
14+
function findMin(nums: number[]): number {
15+
let start = 0
16+
let end = nums.length - 1
17+
18+
while (start < end) {
19+
let target = Math.floor((start + end) / 2)
20+
if (nums[target] < nums[end]) {
21+
end = target
22+
} else {
23+
start = target + 1
24+
}
25+
}
26+
27+
return nums[start]
28+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
/*
2+
์Šคํƒ์„ ๋งŒ๋“ค์–ด s๋ฅผ ํƒ์ƒ‰ํ•˜๋ฉฐ ์ง‘์–ด๋„ฃ๊ณ , ํ—ˆ์šฉ๋˜์ง€ ์•Š์€ ๊ด„ํ˜ธ๊ฐ€ ์˜ค๋ฉด false๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค
3+
- ํ—ˆ์šฉํ•˜๋Š” ๊ด„ํ˜ธ : ์—ด๋ ค์žˆ๋Š” ๊ด„ํ˜ธ (, {, [ ํ˜น์€ ๋งˆ์ง€๋ง‰ ์›์†Œ์˜ ์ง์ด ๋˜๋Š” ๋‹ซ๋Š”๊ด„ํ˜ธ
4+
5+
์‹œ๊ฐ„๋ณต์žก๋„ : O(N) - N์€ s์˜ length
6+
๊ณต๊ฐ„๋ณต์žก๋„ : O(N) (๊ด„ํ˜ธ ๋ฐฐ์—ด ๋ฐ ๊ด„ํ˜ธ ์Œ)
7+
*/
8+
9+
function isValid(s: string): boolean {
10+
const stack = []
11+
const openBrackets = ['(', '{', '[']
12+
const bracketMap = {
13+
'(': ')',
14+
'{': '}',
15+
'[': ']',
16+
}
17+
18+
for (const char of s) {
19+
if (openBrackets.includes(char)) {
20+
stack.push(char)
21+
continue
22+
}
23+
const last = stack.at(-1)
24+
if (char === bracketMap[last]) {
25+
stack.pop()
26+
continue
27+
}
28+
29+
return false
30+
}
31+
32+
return stack.length === 0
33+
}

0 commit comments

Comments
ย (0)