๋ฌธ์
๋ฌธ์ ๋งํฌ https://www.acmicpc.net/problem/4949
- ๋ฌธ์์ด์ ํฌํจ๋๋ ๊ดํธ๋ ์๊ดํธ("()") ์ ๋๊ดํธ("[]")๋ก 2์ข
๋ฅ์ด๊ณ , ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๋ ์กฐ๊ฑด์ ์๋์ ๊ฐ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ์๊ดํธ("(")๋ ์ค๋ฅธ์ชฝ ์๊ดํธ(")")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ผ์ชฝ ๋๊ดํธ("[")๋ ์ค๋ฅธ์ชฝ ๋๊ดํธ("]")์๋ง ์ง์ ์ด๋ค์ผ ํ๋ค.
- ๋ชจ๋ ์ค๋ฅธ์ชฝ ๊ดํธ๋ค์ ์์ ๊ณผ ์ง์ ์ด๋ฃฐ ์ ์๋ ์ผ์ชฝ ๊ดํธ๊ฐ ์กด์ฌํ๋ค.
- ๋ชจ๋ ๊ดํธ๋ค์ ์ง์ 1:1 ๋งค์นญ๋ง ๊ฐ๋ฅํ๋ค. ์ฆ, ๊ดํธ ํ๋๊ฐ ๋ ์ด์์ ๊ดํธ์ ์ง์ง์ด์ง์ง ์๋๋ค.
- ์ง์ ์ด๋ฃจ๋ ๋ ๊ดํธ๊ฐ ์์ ๋, ๊ทธ ์ฌ์ด์ ์๋ ๋ฌธ์์ด๋ ๊ท ํ์ด ์กํ์ผ ํ๋ค.
- ์ ๋ฏผ์ด๋ฅผ ๋์ ๋ฌธ์์ด์ด ์ฃผ์ด์ก์ ๋ ๊ท ํ์กํ ๋ฌธ์์ด์ธ์ง ์๋์ง๋ฅผ ํ๋จํด๋ณด์.
- ๊ฐ ๋ฌธ์์ด์ ๋ง์ง๋ง ๊ธ์๋ฅผ ์ ์ธํ๊ณ ์๋ฌธ ์ํ๋ฒณ, ๊ณต๋ฐฑ, ์๊ดํธ("( )"), ๋๊ดํธ("[ ]")๋ก ์ด๋ฃจ์ด์ ธ ์์ผ๋ฉฐ, ์จ์ (".")์ผ๋ก ๋๋๊ณ , ๊ธธ์ด๋ 100๊ธ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค.
- ์ ๋ ฅ์ ์ข ๋ฃ์กฐ๊ฑด์ผ๋ก ๋งจ ๋ง์ง๋ง์ ์จ์ ํ๋(".")๊ฐ ๋ค์ด์จ๋ค.
- ๊ฐ ์ค๋ง๋ค ํด๋น ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๊ณ ์์ผ๋ฉด "yes"๋ฅผ, ์๋๋ฉด "no"๋ฅผ ์ถ๋ ฅํ๋ค.
์์ด๋์ด
- stack์ ์จ์ ์ฌ๋ ์์ ๊ดํธ๊ฐ ๋ค์ด์ฌ ๋๋ง๋ค "s"๋ฅผ ๋ฃ๊ณ ์ฌ๋ ํฐ ๊ดํธ๊ฐ ๋ค์ด์ฌ ๋๋ง๋ค "b"๋ฅผ ๋ฃ์๋ค.
- ๋ซ๋ ์์ ๊ดํธ๊ฐ ๋ค์ด์์ ๋, ๋ง์ง๋ง์ ๋ค์ด์จ๊ฒ "s"๋ผ๋ฉด stack์์ ๋งจ ์์ ๋ฌธ์๋ฅผ ์ญ์ ํ๊ณ ๋ฐ๋ณต๋ฌธ์ ๊ณ์ํ์ง๋ง, ๋ง์ฝ ๋งจ ์์ ์๋ ๋ฌธ์๊ฐ "s"๊ฐ ์๋๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค.
- ๋ง์ฐฌ๊ฐ์ง๋ก ๋ซ๋ ํฐ ๊ดํธ๊ฐ ๋ค์ด์์ ๋, ๋ง์ง๋ง์ ๋ค์ด์จ๊ฒ "b"๋ผ๋ฉด stack์์ ๋งจ ์์ ๋ฌธ์๋ฅผ ์ญ์ ํ๊ณ ๋ฐ๋ณต๋ฌธ์ ๊ณ์ํ์ง๋ง, ๋ง์ฝ ๋งจ ์์ ์๋ ๋ฌธ์๊ฐ "b"๊ฐ ์๋๋ผ๋ฉด ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค.
- ๊ทธ๋ฆฌ๊ณ ์ด๋ค ๋ซ๋ ๊ดํธ๋ ๋ซ๋ ๊ดํธ๊ฐ ๋ค์ด์๋๋ฐ stack์ด ๋น์ด์๋ค๋ฉด ๋ซ๋ ๊ดํธ๊ฐ ์ฌ๋ ๊ดํธ๋ณด๋ค ๋จผ์ ๋ค์ด์์ ์์๊ฐ ์๋ชป๋๋ค๋ ๋ป์ด๋ฏ๋ก ๋ฐ๋ณต๋ฌธ์ ์ข ๋ฃํ๋ค.
- ๋ฐ๋ณต๋ฌธ์ด ๋ง์ง๋ง๊น์ง ๋ค ๋ ํ, ๋ง์ฝ stack์ด ๋น์ด์๋ค๋ฉด ๋ฌธ์ฅ์ ๊ท ํ์ด ๋ง๋ค๋ ๋ป์ด๋ฏ๋ก "yes"๋ฅผ ์ถ๋ ฅํ๊ณ stack์ด ๋น์ด์์ง ์๋ค๋ฉด ๋ฌธ์ฅ์ ๊ท ํ์ด ๋ง์ง ์๋ค๋ ๋ป์ด๋ฏ๋ก "no"๋ฅผ ์ถ๋ ฅํ๋ค.
๊ฒช์ ์ํ์ฐฉ์ค
- ์ฒ์์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๊ณ์ ๋์ ๋ญ๊ฐ ๋ฌธ์ ์ธ๊ฐ ํ๋ค... ์๊ณ ๋ณด๋ ๋ฌธ์ฅ์ ์ ๋ ฅ๋ฐ๊ณ ๋ฌธ์์ ์ ๊ทผํ ๋, 's.split("")[i]' ์ด๋ฐ์์ผ๋ก ์ ๊ทผํ๋๋ฐ ์ด ๋ถ๋ถ์์ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋๋ ๊ฒ์ด์๋ค...
- ๊ทธ๋์ ์ ๋ถ๋ถ์ 's.charAt[i]'๋ก ๋ฐ๊ฟ์ฃผ๋ ๋ฉ๋ชจ๋ฆฌ ์ด๊ณผ๊ฐ ๋์ง ์์๋ค... ใ ใ ์์ผ๋ก๋ split()์ผ๋ก ๋ฌธ์๋ฅผ ์ ๊ทผํ๊ธฐ ๋ณด๋จ charAt[]์ผ๋ก ์ ๊ทผํด์ผ๊ฒ ๋ค...
์ฝ๋
import java.io.*;
import java.util.*;
public class BOJ4949 {
public static void main(String[] args) throws Exception{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while(true){
// ์
๋ ฅ๋๋ ํ ๋ฌธ์ฅ
String s = br.readLine();
// ๋ฌธ์ฅ์ ๊ธธ์ด
int s_len = s.length();
Stack<String> smb = new Stack<>();
// ๋ง์ฝ ๋ฌธ์ฅ์ ์์์ด ๊ธธ์ด์ ๊ฐ์์ก์ ๋
if(s_len == 1){
// ๋ง์ฝ ๊ทธ ๋ฌธ์ฅ์ด '.' ํ๋๋ผ๋ฉด
if(s.equals(".")){
// ์ข
๋ฃ
break;
}
}
for(int i = 0; i < s_len; i++){
//๋ง์ฝ ์๊ดํธ ์ฌ๋๊ฒ ํ๋ ์๋ค๋ฉด ์คํํ
s๋ฅผ ๋ฃ์
if(s.charAt(i) == '('){
smb.add("s");
}
// ๋ง์ฝ ์๊ดํธ ๋ซ๋๊ฒ ํ๋ ์๋ค๋ฉด ์นด์ดํธ์์ - 1
else if(s.charAt(i) == ')'){
// ๋ง์ฝ ์คํ์ด ๋น์ด์์ง ์๋ค๋ฉด
if(!smb.empty()){
String stk = smb.peek();
// ๋ง์ฝ ์ต๊ทผ์ ๋ค์ด์จ๊ฒ ์๊ดํธ๋ผ๋ฉด ๋ซ๋ ์์๊ฐ ๋ง์ผ๋ฏ๋ก pop
if(stk.equals("s")){
smb.pop();
}
else{
sb.append("no" + "\n");
break;
}
}
// ๋ง์ฝ ๋น์ด์๋ค๋ฉด ์ฌ๋๊ฒ ์๋๋ฐ ๋ซ๋๊ฒ ๋ค์ด์จ ๊ฒ์ด๋ฏ๋ก ๋ฐ๋ณต๋ฌธ ์ข
๋ฃ
else{
sb.append("no" + "\n");
break;
}
}
// ๋ง์ฝ ๋๊ดํธ ์ฌ๋๊ฒ ํ๋ ์๋ค๋ฉด ์คํํ
b๋ฅผ ๋ฃ์
else if(s.charAt(i) == '['){
smb.add("b");
}
// ๋ง์ฝ ๋๊ดํจ ๋ซ๋๊ฒ ํ๋ ์๋ค๋ฉด
else if(s.charAt(i) == ']'){
// ๋ง์ฝ ์คํ์ด ๋น์ด์์ง ์๋ค๋ฉด
if(!smb.empty()){
String stk = smb.peek();
// ๋ง์ฝ ์ต๊ทผ์ ๋ค์ด์จ๊ฒ ๋๊ดํธ๋ผ๋ฉด ๋ซ๋ ์์๊ฐ ๋ง์ผ๋ฏ๋ก pop์ผ๋ก ๋บ
if(stk.equals("b")){
smb.pop();
}
// ์๋๋ผ๋ฉด "no"์ถ๋ ฅ
else{
sb.append("no" + "\n");
break;
}
}
// ๋ง์ฝ ๋น์ด์๋ค๋ฉด ์ฌ๋๊ฒ ์๋๋ฐ ๋ซ๋๊ฒ ๋ค์ด์จ ๊ฒ์ด๋ฏ๋ก ๋ฐ๋ณต๋ฌธ ์ข
๋ฃ
else{
sb.append("no" + "\n");
break;
}
}
// ๋ฐ๋ณต๋ฌธ์ ๋ง์ง๋ง์ด ๋๋ค๋ฉด
if(i == (s_len - 1)){
if(smb.empty()){
sb.append("yes" + "\n");
}
// ๋ง์ฝ ๋ฐ๋ณต๋ฌธ์ด ๋๋๊ณ ์๊ดํธ์ ๋๊ดํธ์ ์นด์ดํธ๊ฐ 0์ด ์๋๋ผ๋ฉด
// ๋จ๋๊ฒ ์๊ฑฐ๋ ์์๊ฐ ์๋ชป๋๋ค๋ ๋ป์ด๋ฏ๋ก "no" ์ถ๋ ฅ
else{
sb.append("no" + "\n");
}
}
}
}
System.out.println(sb);
}
}
'์๊ณ ๋ฆฌ์ฆ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Java] BOJ 10773 ์ ๋ก (0) | 2024.07.20 |
---|---|
[Java] BOJ 9012 ๊ดํธ (2) | 2024.07.19 |
[Java] BOJ 2839 ์คํ ๋ฐฐ๋ฌ (0) | 2024.07.18 |
[Java] BOJ 2164 ์นด๋2 (0) | 2024.07.18 |
[Java] BOJ 1920 ์ ์ฐพ๊ธฐ (0) | 2024.07.17 |