Skip to content

Commit c2b1842

Browse files
valid parentheses solution
1 parent 32085b5 commit c2b1842

File tree

1 file changed

+45
-0
lines changed

1 file changed

+45
-0
lines changed

โ€Žvalid-parentheses/jaejeong1.java

Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
import java.util.HashMap;
2+
import java.util.Stack;
3+
import java.util.Map;
4+
5+
class SolutionValidParentheses {
6+
7+
public boolean isValid(String s) {
8+
// last in first out ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌํ•ด์•ผํ•˜๋ฏ€๋กœ ์Šคํƒ ์‚ฌ์šฉ
9+
// ์—ฌ๋Š” ๋ฌธ์ž๋ฉด put
10+
// ๋‹ซ๋Š” ๋ฌธ์ž๋ฉด pop
11+
// ์ด ๋•Œ pop ๋Œ€์ƒ์ด ์˜ฌ๋ฐ”๋ฅธ ์ง์ธ์ง€ ํ™•์ธํ•œ๋‹ค. ์•„๋‹ˆ๋ฉด false ๋ฐ˜ํ™˜
12+
// ์ง ํ™•์ธ ์‹œ O(1)๋กœ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด Map์„ ์‚ฌ์šฉ, ์—ฌ๋Š” ๋ฌธ์ž์™€ ๋‹ซ๋Š” ๋ฌธ์ž๋ฅผ key:value๋กœ ๋งคํ•‘
13+
// ๋๊นŒ์ง€ ๋Œ์•˜๊ณ , ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด return true, ์•„๋‹ˆ๋ฉด false ๋ฐ˜ํ™˜
14+
// ์‹œ๊ฐ„๋ณต์žก๋„: O(N), ๊ณต๊ฐ„๋ณต์žก๋„: O(N)
15+
16+
Stack<Character> stack = new Stack<>();
17+
18+
Map<Character, Character> matchedMap = new HashMap<>();
19+
matchedMap.put('(', ')');
20+
matchedMap.put('{', '}');
21+
matchedMap.put('[', ']');
22+
23+
for (int i=0; i<s.length(); i++) {
24+
var currentChar = s.charAt(i);
25+
26+
// ์—ฌ๋Š” ๋ฌธ์ž
27+
if (matchedMap.containsKey(currentChar)) {
28+
stack.push(currentChar);
29+
} else { // ๋‹ซ๋Š” ๋ฌธ์ž
30+
if (stack.isEmpty()) { // ์—ฌ๋Š” ๋ฌธ์ž๊ฐ€ ์—†์„ ๊ฒฝ์šฐ false
31+
return false;
32+
}
33+
34+
var prevChar = stack.peek();
35+
if (matchedMap.get(prevChar).equals(currentChar)) {
36+
stack.pop();
37+
} else { // ๋‹ซ๋Š” ๋ฌธ์ž์™€ ์—ฌ๋Š” ๋ฌธ์ž ์ง์ด ์•ˆ๋งž์„ ๊ฒฝ์šฐ false
38+
return false;
39+
}
40+
}
41+
}
42+
43+
return stack.isEmpty(); // ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด ๋ชจ๋“  ์ง ๋งค์นญ์ด ์™„๋ฃŒ๋œ ๊ฒƒ์œผ๋กœ true ๋ฐ˜ํ™˜
44+
}
45+
}

0 commit comments

Comments
ย (0)