Skip to content

Commit dc9e7e0

Browse files
authored
Merge pull request #893 from lledellebell/main
[dd_._._bb] Week 6
2 parents b12687f + d80e696 commit dc9e7e0

File tree

2 files changed

+108
-0
lines changed

2 files changed

+108
-0
lines changed
Lines changed: 41 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,41 @@
1+
/***
2+
*
3+
* @problem
4+
* - ๋ฐฐ์—ด์—์„œ ๋‘ ์„ ์„ ์„ ํƒํ•˜์—ฌ ์ตœ๋Œ€ ๋ฌผ์„ ๋‹ด์„ ์ˆ˜ ์žˆ๋Š” ๋ฉด์ ์„ ๊ตฌํ•˜๋Š” ๋ฌธ์ œ
5+
*
6+
* @constraints
7+
* - ๋ฐฐ์—ด์˜ ๊ธธ์ด๋Š” 2 ์ด์ƒ 10^5 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
8+
* - ๊ฐ ๋†’์ด๋Š” 0 ์ด์ƒ 10^4 ์ดํ•˜์˜ ์ •์ˆ˜์ž…๋‹ˆ๋‹ค.
9+
*
10+
* @example
11+
* - ์ž…๋ ฅ: height = [1,8,6,2,5,4,8,3,7]
12+
* - ์ถœ๋ ฅ: 49
13+
* (๋†’์ด 8๊ณผ 7์„ ์„ ํƒํ•˜์—ฌ ๋„“์ด = min(8, 7) * (8 - 1) = 49)
14+
*
15+
* @description
16+
* - ๋ฐฐ์—ด์˜ ์–‘ ๋์—์„œ ์‹œ์ž‘ํ•˜๋Š” ๋‘ ๊ฐœ์˜ ํฌ์ธํ„ฐ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•ฉ๋‹ˆ๋‹ค.
17+
* - ํ˜„์žฌ ํฌ์ธํ„ฐ ์œ„์น˜์—์„œ์˜ ๋„“์ด๋ฅผ ๊ณ„์‚ฐํ•˜๊ณ  ์ตœ๋Œ€๊ฐ’์„ ๊ฐฑ์‹ ํ•ฉ๋‹ˆ๋‹ค.
18+
* - ๋” ์ž‘์€ ๋†’์ด๋ฅผ ๊ฐ€์ง„ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™ํ•˜์—ฌ ๋” ํฐ ๋„“์ด๋ฅผ ํƒ์ƒ‰ํ•ฉ๋‹ˆ๋‹ค.
19+
*
20+
* @complexity
21+
* - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
22+
* (๋ฐฐ์—ด์„ ํ•œ ๋ฒˆ๋งŒ ์ˆœํšŒํ•˜๋ฉฐ ์ตœ๋Œ€ ๋„“์ด๋ฅผ ๊ณ„์‚ฐ)
23+
* - ๊ณต๊ฐ„ ๋ณต์žก๋„: O(1)
24+
* (์ถ”๊ฐ€ ๋ฉ”๋ชจ๋ฆฌ ์‚ฌ์šฉ ์—†์ด ํฌ์ธํ„ฐ๋งŒ ์‚ฌ์šฉ)
25+
*
26+
*/
27+
function maxArea(height: number[]): number {
28+
let left = 0,
29+
right = height.length - 1,
30+
maxArea = 0;
31+
32+
while (left < right) {
33+
// ํ˜„์žฌ ๋„“์ด ๊ณ„์‚ฐ ๋ฐ ์ตœ๋Œ€๊ฐ’ ๊ฐฑ์‹ 
34+
maxArea = Math.max(maxArea, Math.min(height[left], height[right]) * (right - left));
35+
36+
// ๋” ์ž‘์€ ๋†’์ด์˜ ํฌ์ธํ„ฐ๋ฅผ ์ด๋™
37+
height[left] < height[right] ? left++ : right--;
38+
}
39+
40+
return maxArea;
41+
}

โ€Žvalid-parentheses/lledellebell.ts

Lines changed: 67 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
/***
2+
*
3+
* @problem
4+
* - ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ์ง์„ ์ด๋ฃจ๋Š”์ง€ ํ™•์ธํ•˜๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค.
5+
*
6+
* @constraints
7+
* - ๋ฌธ์ž์—ด์€ ์˜ค์ง '(', ')', '{', '}', '[', ']' ๋ฌธ์ž๋กœ๋งŒ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.
8+
* - ๋ฌธ์ž์—ด์˜ ๊ธธ์ด๋Š” 0 ์ด์ƒ 10^4 ์ดํ•˜์ž…๋‹ˆ๋‹ค.
9+
*
10+
* @example
11+
* - ์ž…๋ ฅ: "()"
12+
* ์ถœ๋ ฅ: true
13+
* - ์ž…๋ ฅ: "(){}"
14+
* ์ถœ๋ ฅ: true
15+
* - ์ž…๋ ฅ: "(]"
16+
* ์ถœ๋ ฅ: false
17+
* - ์ž…๋ ฅ: "([)]"
18+
* ์ถœ๋ ฅ: false
19+
* - ์ž…๋ ฅ: "{}"
20+
* ์ถœ๋ ฅ: true
21+
*
22+
* @description
23+
* - ์—ฌ๋Š” ๊ด„ํ˜ธ๋Š” ์Šคํƒ์— ์ถ”๊ฐ€ํ•˜๊ณ , ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ์Šคํƒ์˜ ๋งจ ์œ„ ์š”์†Œ(๊ฐ€์žฅ ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ์—ฌ๋Š” ๊ด„ํ˜ธ)์™€ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.
24+
* - ๋‹ซ๋Š” ๊ด„ํ˜ธ์™€ ์Šคํƒ์˜ ๋งจ ์œ„ ์š”์†Œ๊ฐ€ ์ง์„ ์ด๋ฃจ์ง€ ์•Š์œผ๋ฉด ์œ ํšจํ•˜์ง€ ์•Š์€ ๋ฌธ์ž์—ด๋กœ ํŒ๋‹จํ•ฉ๋‹ˆ๋‹ค.
25+
* - ๋ฌธ์ž์—ด์„ ๋ชจ๋‘ ์ˆœํšŒํ•œ ํ›„ ์Šคํƒ์ด ๋น„์–ด ์žˆ์œผ๋ฉด ์œ ํšจํ•œ ๊ด„ํ˜ธ ๋ฌธ์ž์—ด์ž…๋‹ˆ๋‹ค.
26+
*
27+
* @complexity
28+
* - ์‹œ๊ฐ„ ๋ณต์žก๋„: O(n)
29+
* ๋ฌธ์ž์—ด์„ ํ•œ ๋ฒˆ๋งŒ ์ˆœํšŒํ•˜๋ฏ€๋กœ ์‹œ๊ฐ„ ๋ณต์žก๋„๋Š” O(n)์ž…๋‹ˆ๋‹ค.
30+
* - ๊ณต๊ฐ„ ๋ณต์žก๋„: O(n)
31+
* ์Šคํƒ์— ์ €์žฅ๋˜๋Š” ์—ฌ๋Š” ๊ด„ํ˜ธ์˜ ์ตœ๋Œ€ ๊ฐœ์ˆ˜๋Š” ๋ฌธ์ž์—ด ๊ธธ์ด์— ๋น„๋ก€ํ•˜๋ฏ€๋กœ ๊ณต๊ฐ„ ๋ณต์žก๋„๋Š” O(n)์ž…๋‹ˆ๋‹ค.
32+
*
33+
*/
34+
function isValid(s: string): boolean {
35+
// ๊ด„ํ˜ธ ์Œ์„ ์ €์žฅํ•˜๋Š” Map ์ƒ์„ฑ
36+
const map = new Map<string, string>([
37+
[')', '('],
38+
['}', '{'],
39+
[']', '[']
40+
]);
41+
42+
// ์Šคํƒ ์ดˆ๊ธฐํ™”
43+
const stack: string[] = [];
44+
45+
// ๋ฌธ์ž์—ด์„ ์ˆœํšŒ
46+
for (const char of s) {
47+
if (map.has(char)) {
48+
// ๋‹ซ๋Š” ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ ์Šคํƒ์—์„œ popํ•˜์—ฌ ๋น„๊ต
49+
const topElement = stack.length > 0 ? stack.pop() : undefined;
50+
if (topElement !== map.get(char)) {
51+
return false; // ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ฒฝ์šฐ
52+
}
53+
} else {
54+
// ์—ฌ๋Š” ๊ด„ํ˜ธ์ผ ๊ฒฝ์šฐ ์Šคํƒ์— push
55+
stack.push(char);
56+
}
57+
}
58+
59+
// ์Šคํƒ์ด ๋น„์–ด ์žˆ์œผ๋ฉด ์œ ํšจํ•œ ๊ด„ํ˜ธ(๋ชจ๋“  ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‹ซ๋Š” ๊ด„ํ˜ธ์™€ ์ง์„ ์ด๋ฃธ)
60+
return stack.length === 0;
61+
}
62+
63+
console.log(isValid("()")); // true
64+
console.log(isValid("(){}")); // true
65+
console.log(isValid("(]")); // false
66+
console.log(isValid("([)]")); // false
67+
console.log(isValid("{[]}")); // true

0 commit comments

Comments
ย (0)