๋ฌธ์
ํด๋น ํฌ์คํ ์ ๋ฐฑ์ค์ 9012๋ฒ ๊ดํธ ์ ์ ๊ทผ๊ณผ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ค๋ช ํ ๊ธ ์ ๋๋ค.
์ ๋ต ์์ค ์ฝ๋๋ฅผ ํ์ธํ์๋ ค๋ฉด solve url ์์ ํ์ธ ๊ฐ๋ฅํฉ๋๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ์ด๋ค ๋ฐฉ์์ผ๋ก ์ ๊ทผํด์ผ ํ๋์ง๋ฅผ ๋จผ์ ์๊ฐํด๋ณด์.
ํด๊ฒฐ๋ฒ
์ด๋ฒ ๋ฌธ์ ๋ ์คํ์ ์์ฃผ ๋ํ์ ์ธ ๋ฌธ์ ๋ผ๊ณ ํ ์ ์๋ ๊ดํธ ๊ฒ์ฌ ๋ฌธ์ ์ด๋ค.
ํด๋น ๋ฌธ์ ์์๋ 2๊ฐ์ง ๊ธฐํธ์ ๋ฐ๋ผ์ ์คํ์ด ์งํํ๋ ์ฐ์ฐ์ด ๋ฌ๋ผ์ง๋ค.
(
: ์ฌ๋ ๊ดํธ)
: ๋ซ๋ ๊ดํธ
์ฌ๋ ๊ดํธ
์ฌ๋ ๊ดํธ๋ ๋ฌด์กฐ๊ฑด ๋ซ๋ ๊ดํธ์ ์ง์ด๋ค๋ค.
๊ทธ๋ผ ์ฌ๋ ๊ดํธ๊ฐ ๋ฑ์ฅํ๋ค๋ ์๋ฆฌ๋ ์ธ์ ๊ฐ ๋ซ๋ ๊ดํธ๊ฐ ๋ฑ์ฅํ ๊ฒ์ด๋ค๋ผ๋ ์๋ฏธ๋ก ํด์ํ ์ ์๋ค.
์ฐ๋ฆฌ๋ ์ด ์ฌ๋ ๊ดํธ๋ฅผ ์คํ์ ๋ฃ๊ณ ๋ซ๋ ๊ดํธ๋ฅผ ๊ธฐ๋ค๋ฆด ๊ฒ์ด๋ค.
๋ซ๋ ๊ดํธ
๋ซ๋ ๊ดํธ๋ ์ ๋ ์ค์ค๋ก ํผ์ ๋ซํ ์ ์๋ค.
๋ซ๋ ๊ดํธ๋ ๋ฌด์กฐ๊ฑด ์์ ์ฌ๋ ๊ดํธ์ ์ง์ด ๋์ด์ผ ํ๋๋ฐ, ๋ง์ฝ ํด๋น ๋ซ๋ ๊ดํธ๊ฐ ์ฌ๋ ๊ดํธ ์์ด, ์ฆ ์คํ์ popํ ๊ฐ์ด ์์ผ๋ฉด ์ ํํ ๋ง ํด์ EmptyStackException()
์ด ๋ฐ์ํ๋ฉด ํด๋น ๋ฌธ์ฅ์ ์์ ํ ๋ฌธ์ฅ์ด ์๋๋ผ๊ณ ํ๋จํด๋ ๋๋ค.
๊ทธ๋์ ์ฐ๋ฆฌ๋ ์ด ๋ซ๋ ๊ดํธ๋ฅผ ๋ง๋๋ฉด ์คํ์์ pop ์ฐ์ฐ์ ์ํํ๋๋ก ํ ๊ฒ์ด๋ค.
ํ
์ฌ๊ธฐ์ ๋ค๋ฅธ ์ฌ๋๋ค์ ํ์ด๋ฅผ ๋ณด๋ฉด boolean flag
๋ฅผ ์ด์ฉํด์ exception์ด ๋ฐ์ํ๋ฉด flag๋ฅผ false๋ก ๋ณ๊ฒฝ์ํค๊ณ ๋ง์ง๋ง์ flag๊ฐ false์ธ์ง ์๋์ง ๊ฒ์ฌํ๋ ๋ก์ง์ด ์กด์ฌํ๋ค.
ํ์ง๋ง ์ฐ๋ฆฌ๋ ์ฒ์๋ถํฐ ์ ๋ต ๋ฐฐ์ด์ ์ ๋ต์์ ์ ์ฅํ๊ณ , ๋ง์ฝ exception์ด ํ ๋ฒ์ด๋ผ๋ ๋ฐ์๋๋ฉด ์ค๋ต์ด๋ผ๊ณ ์ ์ฅํ๊ณ ๋ง์ง๋ง์ ์ ๋ต์ ์ถ๋ ฅํ๋๋ก ํ์.
์ด๋ฐ ๋ฐฉ๋ฒ์ด ์กฐ๊ธ ๋ํจ์จ์ ์ผ ๊ฒ ๊ฐ๋ค.
์ ๋ต ์ฝ๋
class Main {
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int t = Integer.parseInt(br.readLine());
while(t-- > 0) {
Stack<String> stack = new Stack<>();
String answer = "YES";
String[] n = br.readLine().split("");
for (int i = 0; i < n.length; i++) {
if(n[i].equals("(")) stack.push("(");
else if(n[i].equals(")")) {
if(stack.isEmpty()) answer = "NO";
else stack.pop();
}
}
if(!stack.isEmpty()) {
answer = "NO";
}
bw.write(answer + "\n");
}
bw.flush();
bw.close();
}
}
๋๊ธ