๋ฌธ์
๊ดํธ ๋ฌธ์์ด(Parenthesis String, PS)์ ๋ ๊ฐ์ ๊ดํธ ๊ธฐํธ์ธ ‘(’ ์ ‘)’ ๋ง์ผ๋ก ๊ตฌ์ฑ๋์ด ์๋ ๋ฌธ์์ด์ด๋ค. ๊ทธ ์ค์์ ๊ดํธ์ ๋ชจ์์ด ๋ฐ๋ฅด๊ฒ ๊ตฌ์ฑ๋ ๋ฌธ์์ด์ ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(Valid PS, VPS)์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ํ ์์ ๊ดํธ ๊ธฐํธ๋ก ๋ “( )” ๋ฌธ์์ด์ ๊ธฐ๋ณธ VPS ์ด๋ผ๊ณ ๋ถ๋ฅธ๋ค. ๋ง์ผ x ๊ฐ VPS ๋ผ๋ฉด ์ด๊ฒ์ ํ๋์ ๊ดํธ์ ๋ฃ์ ์๋ก์ด ๋ฌธ์์ด “(x)”๋ VPS ๊ฐ ๋๋ค. ๊ทธ๋ฆฌ๊ณ ๋ VPS x ์ y๋ฅผ ์ ํฉ(concatenation)์ํจ ์๋ก์ด ๋ฌธ์์ด xy๋ VPS ๊ฐ ๋๋ค. ์๋ฅผ ๋ค์ด “(())()”์ “((()))” ๋ VPS ์ด์ง๋ง “(()(”, “(())()))” , ๊ทธ๋ฆฌ๊ณ “(()” ๋ ๋ชจ๋ VPS ๊ฐ ์๋ ๋ฌธ์์ด์ด๋ค.
์ฌ๋ฌ๋ถ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง ๊ดํธ ๋ฌธ์์ด์ด VPS ์ธ์ง ์๋์ง๋ฅผ ํ๋จํด์ ๊ทธ ๊ฒฐ๊ณผ๋ฅผ YES ์ NO ๋ก ๋ํ๋ด์ด์ผ ํ๋ค.
์ ๋ ฅ
์ ๋ ฅ ๋ฐ์ดํฐ๋ ํ์ค ์ ๋ ฅ์ ์ฌ์ฉํ๋ค. ์ ๋ ฅ์ T๊ฐ์ ํ ์คํธ ๋ฐ์ดํฐ๋ก ์ฃผ์ด์ง๋ค. ์ ๋ ฅ์ ์ฒซ ๋ฒ์งธ ์ค์๋ ์ ๋ ฅ ๋ฐ์ดํฐ์ ์๋ฅผ ๋ํ๋ด๋ ์ ์ T๊ฐ ์ฃผ์ด์ง๋ค. ๊ฐ ํ ์คํธ ๋ฐ์ดํฐ์ ์ฒซ์งธ ์ค์๋ ๊ดํธ ๋ฌธ์์ด์ด ํ ์ค์ ์ฃผ์ด์ง๋ค. ํ๋์ ๊ดํธ ๋ฌธ์์ด์ ๊ธธ์ด๋ 2 ์ด์ 50 ์ดํ์ด๋ค.
์ถ๋ ฅ
์ถ๋ ฅ์ ํ์ค ์ถ๋ ฅ์ ์ฌ์ฉํ๋ค. ๋ง์ผ ์ ๋ ฅ ๊ดํธ ๋ฌธ์์ด์ด ์ฌ๋ฐ๋ฅธ ๊ดํธ ๋ฌธ์์ด(VPS)์ด๋ฉด “YES”, ์๋๋ฉด “NO”๋ฅผ ํ ์ค์ ํ๋์ฉ ์ฐจ๋ก๋๋ก ์ถ๋ ฅํด์ผ ํ๋ค.
์คํ์ ๊ธฐ๋ณธ๋ฌธ์ ์ธ ๊ดํธ๋ฌธ์ ์ด๋ค.
์ฒ์์ ์ฝ๋๋ฅผ ๊ตฌํํ๊ณ ๋์, ํด์์๋ ์ ์์ ์ผ๋ก ์คํ์ด ๋๋๋ฐ ๋ฐฑ์ค์ฑ์ ์์ ์๊พธ ์ค๋ต์ด๋ผ๊ณ ๋์์ ๋ดค๋๋
String s ๋ฅผ nextLine ์ผ๋ก ์ ๋ ฅ๋ฐ์ผ๋ฉด ํ๋ฆฌ๋ค๊ณ ๋์จ๋ค..
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb=new Scanner(System.in);
int n=kb.nextInt();
for(int i=0; i<n; i++){
String s=kb.next(); // nextLine (x)
Stack<Character> stack=new Stack<>();
for(int j=0; j<s.length(); j++){
if(s.charAt(j)=='('){
stack.push(s.charAt(j));
}else{
// ๋น์ด์๋์ง ๋จผ์ ํ์ธ
if(stack.empty()){ // ๋น์ด์์ผ๋ฉด
stack.push(s.charAt(j)); // ')' push
break;
}else{ // ๋น์ด์์ง ์์ผ๋ฉด
stack.pop(); // '('์ ๋ง๋๊ฒ ๋ ํ
๋ pop
}
}
}
if(stack.empty()) System.out.println("YES");
else System.out.println("NO");
}
}
}
'๐ ์ฝ๋ฉํ ์คํธ > ๋ฐฑ์ค & ํ๋ก๊ทธ๋๋จธ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[ํ๋ก๊ทธ๋๋จธ์ค][JAVA]Level 1 : ๋ฌธ์์ด ๋ด p์ y์ ๊ฐ์ (0) | 2022.10.08 |
---|---|
[๋ฐฑ์ค][JAVA]2164๋ฒ : ํ(์นด๋2) (1) | 2022.10.08 |
[๋ฐฑ์ค][JAVA]4949๋ฒ : ์คํ(๊ท ํ์กํ ์ธ์) (0) | 2022.10.07 |
[๋ฐฑ์ค][JAVA]10773๋ฒ : ์คํ(์ ๋ก) (1) | 2022.10.05 |
[๋ฐฑ์ค][JAVA]10828๋ฒ : ์คํ (0) | 2022.10.03 |