๐ŸŒžAlgorithm/๐Ÿ”ฅBaekjoon

[Baekjoon] 5872_Clumsy Cows

๋ฟŒ์•ผ._. 2025. 12. 15. 12:34
๋ฌธ์ œ(์ถœ์ฒ˜: 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