https://www.acmicpc.net/problem/4949
๐ ํ์ด 2 : Stack (170ms)
`Stack`์ ์ฌ์ฉํ์ฌ ์ฌ๋ ๊ดํธ๋ฅผ ์ ์ฅํ๊ณ , ๋ซ๋ ๊ดํธ๋ฅผ ๋ง๋๋ฉด ์คํ์ ๋งจ ์ ํญ๋ชฉ๊ณผ ์ง์ ๋ง์ถฐ ๊ท ํ์ ํ์ธํ๋ค.
import java.io.*;
import java.util.Stack;
public class Main {
// ๊ฐ ์ค๋ง๋ค ํด๋น ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๊ณ ์์ผ๋ฉด "yes"๋ฅผ, ์๋๋ฉด "no"๋ฅผ ์ถ๋ ฅ
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while (true) {
/* [1] ์
๋ ฅ */
String str = br.readLine(); // ์๋ฌธ, ๊ณต๋ฐฑ, ์๊ดํธ, ๋๊ดํธ๋ก ์ด๋ฃจ์ด์ง(100๊ธ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์)
if (str.equals(".")) break; // ์จ์ ์ผ๋ก ๋๋จ
/* [2] ์ง ๋ง๋ ๊ดํธ ํ๋จ */
Stack<Character> stack = new Stack<>(); //โจ
boolean isBalanced = true; // ํ๋๊ทธ
for (char c : str.toCharArray()) {
if (c == '[' || c == '(') stack.push(c); // ์ฌ๋ ๊ดํธ pushโจ
else if ((c == ']') || (c == ')')) { // ๋ซ๋ ๊ดํธ
if (stack.isEmpty() || ((c == ']' && stack.peek() != '[')
|| (c == ')' && stack.peek() != '('))) { // ์คํ์ด ๋น์ด์๊ฑฐ๋ ์ง์ด ๋ง์ง ์์ผ๋ฉด
isBalanced = false; // ๋ถ๊ท ํ 1
break;
}
stack.pop(); // ์ง์ด ๋ง๋ ๊ฒฝ์ฐ ์คํ์์ ์ ๊ฑฐโจ
}
}
if (!stack.isEmpty()) isBalanced = false; // ๋ถ๊ท ํ 2
sb.append(isBalanced ? "yes" : "no").append("\n");
}
/* [3] ์ถ๋ ฅ */
System.out.println(sb.toString());
}
}
๐ ํ์ด 1 : contains() + replaceAll() (476ms)
๋ชจ๋ ๊ดํธ ์ด์ธ์ ๋ฌธ์๋ฅผ ์ ๊ฑฐํ ํ, ๊ดํธ ์์ ๋ฐ๋ณต์ ์ผ๋ก ์ ๊ฑฐํ์ฌ ๋จ์ ๋ฌธ์์ด์ด ์๋์ง๋ฅผ ํ์ธํ๋ค.
import java.io.*;
public class Main {
// ๊ฐ ์ค๋ง๋ค ํด๋น ๋ฌธ์์ด์ด ๊ท ํ์ ์ด๋ฃจ๊ณ ์์ผ๋ฉด "yes"๋ฅผ, ์๋๋ฉด "no"๋ฅผ ์ถ๋ ฅ
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
while (true) {
/* [1] ์
๋ ฅ */
String str = br.readLine(); // ์๋ฌธ, ๊ณต๋ฐฑ, ์๊ดํธ, ๋๊ดํธ๋ก ์ด๋ฃจ์ด์ง(100๊ธ์๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์)
if (str.equals(".")) break; // ์จ์ ์ผ๋ก ๋๋จ
/* [2] ์ง ๋ง๋ ๊ดํธ ์ ๊ฑฐ */
str = str.replaceAll("[^\\[\\]\\(\\)]", ""); // ๊ดํธ๊ฐ ์๋ ๋ฌธ์ ์ ๊ฑฐ
while (str.contains("()") || str.contains("[]")) {
str = str.replaceAll("(\\[\\])|(\\(\\))", ""); // ์์ชฝ๋ถํฐ ์ง์ด ๋ง๋ ๊ดํธ ์ ๊ฑฐโจ
}
sb.append((str.isBlank() ? "yes" : "no") + "\n");
}
/* [3] ์ถ๋ ฅ */
System.out.println(sb.toString());
}
}
'๐ท์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํ์ด > ๋ฐฑ์ค' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ฐฑ์ค/Java] 10828 ์คํ(Stack) (0) | 2024.09.02 |
---|---|
[๋ฐฑ์ค/Java] 9012 ๊ดํธ(Stack) (0) | 2024.08.22 |
[๋ฐฑ์ค/Java] 2839 ์คํ ๋ฐฐ๋ฌ('/', '%') (0) | 2024.08.20 |
[๋ฐฑ์ค/Java] 2164 ์นด๋2(LinkedList) (0) | 2024.08.20 |