Skip to content

Commit 7bdd9a1

Browse files
committed
6주차 문제 풀이
1 parent 6235a07 commit 7bdd9a1

File tree

1 file changed

+92
-0
lines changed

1 file changed

+92
-0
lines changed

valid-parentheses/leehyeyun.js

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
/**
2+
* @param {string} s
3+
* @return {boolean}
4+
*/
5+
/*
6+
주어진 문자열 s는 괄호 문자로만 이루어져 있다.
7+
사용 가능한 문자는 '(', ')', '{', '}', '[', ']' 총 6가지이다.
8+
9+
문자열이 올바른 괄호 문자열인지 판단하라.
10+
11+
올바른 괄호 문자열의 조건:
12+
1) 여는 괄호는 반드시 같은 종류의 닫는 괄호로 닫혀야 한다.
13+
2) 괄호는 올바른 순서로 닫혀야 한다.
14+
(가장 마지막에 열린 괄호가 가장 먼저 닫혀야 함)
15+
3) 모든 닫는 괄호는 대응되는 여는 괄호가 있어야 한다.
16+
17+
입력 형식 :
18+
- s: 문자열
19+
- 1 <= s.length <= 10,000
20+
- s는 '()[]{}' 문자로만 구성됨
21+
22+
출력 형식 :
23+
- 올바른 괄호 문자열이면 true
24+
- 그렇지 않으면 false
25+
26+
예시 :
27+
28+
Example 1
29+
입력 : s = "()"
30+
출력 : true
31+
설명 :
32+
- '('가 ')'로 정상적으로 닫힘
33+
34+
Example 2
35+
입력 : s = "()[]{}"
36+
출력 : true
37+
설명 :
38+
- 모든 괄호가 종류와 순서에 맞게 닫힘
39+
40+
Example 3
41+
입력 : s = "(]"
42+
출력 : false
43+
설명 :
44+
- 여는 괄호 '('와 닫는 괄호 ']'의 종류가 다름
45+
46+
Example 4
47+
입력 : s = "([])"
48+
출력 : true
49+
설명 :
50+
- 괄호가 중첩되어 있으나 순서와 종류 모두 올바름
51+
52+
Example 5
53+
입력 : s = "([)]"
54+
출력 : false
55+
설명 :
56+
- 괄호의 닫히는 순서가 올바르지 않음
57+
*/
58+
var isValid = function (s) {
59+
const stack = [];
60+
61+
for (var char of s) {
62+
if(char == "(" || char == "{" || char == "[")
63+
{
64+
stack.push(char);
65+
}else {
66+
const last = stack[stack.length - 1];
67+
if(char == ")" && last == "("){
68+
stack.pop();
69+
}else if (char == "}" && last == "{"){
70+
stack.pop();
71+
}else if (char == "]" && last == "["){
72+
stack.pop();
73+
}else {
74+
return false;
75+
}
76+
}
77+
}
78+
79+
if(stack.length == 0)
80+
{
81+
return true;
82+
}else {
83+
return false
84+
}
85+
};
86+
87+
console.log(isValid("()"))
88+
console.log(isValid("()[]{}"))
89+
console.log(isValid("(]"))
90+
console.log(isValid("([])"))
91+
console.log(isValid("([)]"))
92+

0 commit comments

Comments
 (0)