5.1. ์ฌ๋ฐ๋ฅธ ๊ดํธ
๋ฌธ์
์ ๋ ฅ๋ ๊ดํธ๊ฐ ์ฌ๋ฐ๋ฅธ ๊ดํธ์ด๋ฉด “YES", ์ฌ๋ฐ๋ฅด์ง ์์ผ๋ฉด ”NO" ์ถ๋ ฅ
(())() ๋ ๊ดํธ์ ์์ด ์ฌ๋ฐ๋ฅด๊ฒ ์์นํ๋ ๊ฒ, (()()))์ ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋.
์ ๋ ฅ
(()(()))(()
์ถ๋ ฅ
NO
ํ์ด
import java.util.*;
public class Main {
public String solution(String str) {
String answer = "YES";
Stack<Character> stack = new Stack<>();
for(char c : str.toCharArray()) {
if(c == '(') stack.push(c);
else {
if(stack.isEmpty()) return "NO"; // ๋ซ๋ ๊ดํธ๊ฐ ๋ ๋ง์ ๊ฒฝ์ฐ
stack.pop(); // ์๋จ์ ๋ฌธ์๋ฅผ ๊บผ๋
}
}
// ์ฌ๋ ๊ดํธ๊ฐ ๋ ๋ง์ ๊ฒฝ์ฐ
if(!stack.isEmpty()) return "NO";
return answer;
}
public static void main(String[] args) throws Exception {
Main T = new Main();
Scanner kb = new Scanner(System.in);
String str = kb.next();
System.out.println(T.solution(str));
}
}
์
๋ ฅ๋ฐ์ ๋ฌธ์์ด์ ๋ฌธ์ ํ๋์ฉ ์กฐํํ๋ฉฐ
์ฌ๋ ๊ดํธ์ธ ๊ฒฝ์ฐ ๋ฌด์กฐ๊ฑด stack์ push ํด ์ค
๋ซ๋ ๊ดํธ ๋ฉด pop() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด stack ์๋จ์ ๋ฌธ์๋ฅผ ๋นผ์ค๋ค.
๋ซ๋ ๊ดํธ๊ฐ ๋์๋๋ฐ stack์ด ๋น์ด์๋ค๋ฉด
๋ซ๋ ๊ดํธ๊ฐ ๋ ๋ง์ ๊ฒฝ์ฐ์ด๋ฏ๋ก ์ฌ๋ฐ๋ฅธ ๊ดํธ๊ฐ ์๋
"NO"๋ฅผ return
๋ง์ฝ ๋ฐ๋ณต๋ฌธ์ด ์ข
๋ฃ๋์๋๋ฐ stack์ด ๋น์ด์์ง ์๋ค๋ฉด
์ฌ๋ ๊ดํธ๊ฐ ๋ ๋ง์์ stack์ ๋จ์์๋ ๊ฒ
"NO"๋ฅผ return
์ด ์กฐ๊ฑด์ ๋ชจ๋ ๊ฑธ๋ฆฌ์ง ์๋๋ค๋ฉด ์ฌ๋ฐ๋ฅธ ๊ดํธ์ธ ๊ฒ์ด๋ฏ๋ก
"YES"๋ฅผ return
๋ฉ๋ชจ
- stack.pop()
- stack.isEmpty()