๋ฐ์ํ
[LeetCode] 20. Valid Parentheses
https://leetcode.com/problems/valid-parentheses/
๋ฌธ์ ์ ๊ทผ
๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ธ์ง ์ ๋ซํ๊ณ ์ด๋ ธ๋์ง๋ฅผ ํ์ธํ๋ ๋ฌธ์ ์ด๋ค. ๋น์ทํ(๋๊ฐ์) ๋ฌธ์ ๋ฅผ ๋ฐฑ์ค์์ ํ์ด๋ด์ Stack์ ์ด์ฉํ๋ฉด ๋๋ค๋ ๊ฒ์ ์๊ณ ์์๋ค.
์ฌ๋ ๊ดํธ์ผ ๋๋ Stack์ push๋ฅผ ํด์ฃผ๊ณ ๋ซํ ๊ดํธ์ผ ๋๋ Stack์ top์ด ๊ฐ์ ์ข
๋ฅ์ ๊ดํธ์ธ์ง ํ์ธํ๊ณ popํ๊ฑฐ๋ ์๋๋ผ๋ฉด false๋ฅผ ๋ฆฌํดํด์ค๋ค.
์ด๋ ์์ธ์ฒ๋ฆฌํ ์ํฉ์ 2๊ฐ์ง์ด๋ค.
- ์ด๋ฆฐ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ์์๋.
- ๋ซํ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ์์๋.
1๋ฒ์ฒ๋ผ ์ด๋ฆฐ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ์๋ค๋ฉด for๋ฌธ์ ๋น ์ ธ๋์์ ๋ Stack์ด ๋น์ด์์ง ์์ ๊ฒ์ด๊ณ , 2๋ฒ์ฒ๋ผ ๋ซํ ๊ดํธ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์๋ค๋ฉด switch๋ฌธ ์์์ ์คํ์ด ๋น์ด์์ ๊ฒ์ด๋ค.
Code
import java.util.Stack;
class Solution {
public boolean isValid(String s) {
Stack<Character> st = new Stack<>();
for(int i=0; i<s.length(); i++){
char cur = s.charAt(i);
char top;
switch(cur){
case '(':
case '{':
case '[':
st.push(cur);
break;
case ')':
if(st.isEmpty())
return false;
top = st.pop();
if(top !='('){
return false;
}
break;
case '}':
if(st.isEmpty())
return false;
top = st.pop();
if(top !='{'){
return false;
}
break;
case ']':
if(st.isEmpty())
return false;
top = st.pop();
if(top !='['){
return false;
}
break;
}
}
return st.isEmpty();
}
}
์ด๋ ค์ ๋ ์ / ๋ฐฐ์ด ์
์๋ ์ ํ๋ฒ ํ์ด๋ดค๋ ๋ฌธ์ ๋ผ์ ์ด๋ ค์์์ด ์ ๊ทผํ๊ณ ํ์๋ ๊ฒ ๊ฐ๋ค.
๋ฐ์ํ
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Algorithm/Java][BOJ] ๋ฐฑ์ค 2908๋ฒ ์์ (0) | 2022.01.20 |
---|---|
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ๋ด๋ฆผ์ฐจ์์ผ๋ก ๋ฐฐ์นํ๊ธฐ (0) | 2022.01.17 |
[Algorithm/Java][LeetCode] 21. Merge Two Sorted Lists (0) | 2022.01.16 |
[Algorithm/Java][BOJ] 1439๋ฒ ๋ค์ง๊ธฐ (0) | 2022.01.16 |
[Algorithm/Java][ํ๋ก๊ทธ๋๋จธ์ค] ๋ฌธ์์ด ๋ด ๋ง์๋๋ก ์ ๋ ฌํ๊ธฐ (0) | 2022.01.11 |