๋ฌธ์ (์ถ์ฒ: 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 |