๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/5872)
< Clumsy Cows >
๋ฌธ์ ํ์ด
stack์ ์ฌ์ฉํ์ฌ ๊ท ํ ์กํ ๊ดํธ ๋ฌธ์์ด์ ๋ง๋ค๊ธฐ ์ํด ๋ค์ง์ด์ผ ํ๋ ์ต์ ๊ดํธ ๊ฐ์๋ฅผ ๊ตฌํ๋ค.
1) ')'์ผ ๋ stack์ด ๋น์ด์๋ค๋ฉด ๊ท ํ ์กํ ๋ฌธ์์ด์ด ์๋๋ฏ๋ก ๋ค์ง์ด์ผ ํ๋ค.
2) ๋ฌธ์์ด ํ์์ด ๋๋ ๋ค stack์ ๊ฐ์ด ๋จ์์๋ค๋ฉด ๊ท ํ ์กํ ๋ฌธ์์ด์ด ์๋๋ฏ๋ก stack์ ํฌ๊ธฐ / 2๋ฅผ ๋ค์ง์ด์ผ ํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class _5872_ { // Clumsy Cows
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
String str = bf.readLine();
Stack<Character> stack = new Stack<>();
int result = 0;
for (int i = 0; i < str.length(); i++) {
if (str.charAt(i) == '(') {
stack.add(str.charAt(i));
} else {
if (!stack.isEmpty()) {
stack.pop();
} else {
result += 1;
stack.add('(');
}
}
}
if (!stack.isEmpty()) {
result += stack.size() / 2;
}
System.out.println(result);
}
}
๋ณ์)
str : ๋ฌธ์์ด
result : ๋ค์ง์ด์ผ ํ๋ ์ต์ ๊ดํธ ๊ฐ์
stack : '('๋ฅผ ์ ์ฅํ๋ Stack
๋ฌธ์์ด์ ์ ๋ ฅ๋ฐ์ ํ์ํ๋ค.
1) '('์ผ ๊ฒฝ์ฐ stack์ ์ ์ฅ
2) ')'์ผ ๊ฒฝ์ฐ stack์ด ๋น์ด์๋ค๋ฉด ๋ค์ง์ด์ ์ ์ฅ, stack์ด ๋น์ด์์ง ์๋ค๋ฉด stack pop
ํ์์ด ๋๋ ๋ค stack์ด ๋น์ด์์ง ์๋ค๋ฉด stack size์ ์ ๋ฐ์ ๋ค์ง๋๋ค. ์ต์ข result๋ฅผ ์ถ๋ ฅํ๋ค.

'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| [Baekjoon] 27589_Streets Ahead (0) | 2025.12.17 |
|---|---|
| [Baekjoon] 6235_Argus (0) | 2025.12.16 |
| [Baekjoon] 17047_Titlovi (0) | 2025.12.12 |
| [Baekjoon] 10331_Miscalculation (0) | 2025.12.10 |
| [Baekjoon] 16652_Email Destruction (0) | 2025.12.09 |