๋ฌธ์ (์ถ์ฒ: https://www.acmicpc.net/problem/10799)
< ์ ๋ง๋๊ธฐ >
๋ฌธ์ ํ์ด
Stack์ ์ฌ์ฉํ์ฌ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ค.
์ฌ๋ ๊ดํธ์ ๋ซํ ๊ดํธ๊ฐ ์ฐ๋ฌ์ ์์ ๋ ์ ๋ง๋๊ธฐ๋ฅผ ์๋ฅธ๋ค๋ ์ ์ ํ์ฉํ๋ค.
my solution (Java)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Stack;
public class _10799_ { // ์ ๋ง๋๊ธฐ
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('(');
if (str.charAt(i + 1) != ')') {
result += 1;
}
} else {
stack.pop();
if(str.charAt(i-1)!=')') {
result += stack.size();
}
}
}
System.out.println(result);
}
}
๋ณ์)
str : ์ ๋ง๋๊ธฐ์ ๋ ์ด์ ๋ฐฐ์น๋ฅผ ๋ํ๋ด๋ ๊ดํธ ํํ
stack : ์๋ ค์ง ์กฐ๊ฐ์ ๊ฐ์๋ฅผ ๊ตฌํ๊ธฐ ์ํ Stack
result : ์๋ ค์ง ์กฐ๊ฐ์ ์ด ๊ฐ์
์ ๋ง๋๊ธฐ์ ๋ ์ด์ ๋ฐฐ์น๋ฅผ ๋ํ๋ด๋ ๊ดํธ ํํ์ ์ ๋ ฅ๋ฐ๋๋ค. ๊ดํธ ํํ์ ํ์ํ๋ฉฐ ๋ค์ ๊ณผ์ ์ ์ํํ๋ค.
1) ์ฌ๋ ๊ดํธ๋ผ๋ฉด stack์ ์ถ๊ฐํ๋ค. ๋ง์ฝ ๋ค์์ด ๋ซ๋ ๊ดํธ๊ฐ ์๋๋ผ๋ฉด ์ ๋ง๋๊ธฐ๋ ๋ป์ด๋ฏ๋ก result์ 1์ ์ถ๊ฐํ๋ค.
2) ๋ซ๋ ๊ดํธ๋ผ๋ฉด stack์์ pop ํ๋ค. ๋ง์ฝ ์ด์ ์ด ๋ซ๋ ๊ดํธ๊ฐ ์๋๋ผ๋ฉด ๋ ์ด์ ๋ ๋ป์ด๋ฏ๋ก stack์ ์๋ ์ ๋ง๋๊ธฐ๋ฅผ ๋ค ์๋ฅด๋ฏ๋ก result์ stack์ ํฌ๊ธฐ๋งํผ ๋ํ๋ค.
์ต์ข ์๋ ค์ง ์กฐ๊ฐ์ ์ด ๊ฐ์์ธ result๋ฅผ ์ถ๋ ฅํ๋ค.
'๐Algorithm > ๐ฅBaekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Baekjoon] 4921_๋๋ฌด ๋ธ๋ก (0) | 2024.08.01 |
---|---|
[Baekjoon] 5619_์ธ ๋ฒ์งธ (0) | 2024.07.30 |
[Baekjoon] 15705_๋จ์ด ์ฐพ๊ธฐ (1) | 2024.07.25 |
[Baekjoon] 8989_์๊ณ (0) | 2024.07.24 |
[Baekjoon] 9753_์ง ๊ณฑ (1) | 2024.07.23 |