02
17

https://www.acmicpc.net/problem/1918

 

1918๋ฒˆ: ํ›„์œ„ ํ‘œ๊ธฐ์‹

์ฒซ์งธ ์ค„์— ์ค‘์œ„ ํ‘œ๊ธฐ์‹์ด ์ฃผ์–ด์ง„๋‹ค. ๋‹จ ์ด ์ˆ˜์‹์˜ ํ”ผ์—ฐ์‚ฐ์ž๋Š” ์•ŒํŒŒ๋ฒณ ๋Œ€๋ฌธ์ž๋กœ ์ด๋ฃจ์–ด์ง€๋ฉฐ ์ˆ˜์‹์—์„œ ํ•œ ๋ฒˆ์”ฉ๋งŒ ๋“ฑ์žฅํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  -A+B์™€ ๊ฐ™์ด -๊ฐ€ ๊ฐ€์žฅ ์•ž์— ์˜ค๊ฑฐ๋‚˜ AB์™€ ๊ฐ™์ด *๊ฐ€ ์ƒ๋žต๋˜๋Š” ๋“ฑ์˜

www.acmicpc.net

 

์ค‘์œ„ํ‘œ๊ธฐ์‹์œผ๋กœ ๋˜์–ด์žˆ๋Š” ๊ฒƒ์„ ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ๋ฐ”๊พธ๋Š” ๊ฒƒ์ด๋‹ค. ๊ธฐ๋ณธ์ ์œผ๋กœ ์Šคํƒ์„ ์‚ฌ์šฉํ•ด ๋ฐ”๊พผ๋‹ค.

์ด๋ฒˆ ๋ฌธ์ œ๋Š” ๋‹คํ–‰ํžˆ ํ•œ๋ฒˆ์— ๋งž์•„์„œ ์˜ค๋‹ต์ฝ”๋“œ๋ฅผ ์˜ฌ๋ฆฌ์ง€ ์•Š์•„๋„ ๋œ๋‹ค.


์˜ค๋‹ต๋…ธํŠธ(ํ‘ธ๋Š” ๋™์•ˆ ์‚ฌ๊ณ ๊ณผ์ • ๋ฐ ๊ฐœ์„ ์ )

ํ›„์œ„ ํ‘œ๊ธฐ์‹์œผ๋กœ ๋ฐ”๊ฟ€๋•Œ๋Š”, ์ˆ˜๋Š” ๊ทธ๋ƒฅ ์ถœ๋ ฅํ•˜๊ณ , ์—ฐ์‚ฐ์ž๋ฅผ ์Šคํƒ์— ๋‹ด์•„์„œ ์šฐ์„ ์ˆœ์œ„์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•ด์•ผ๋œ๋‹ค. ๋งŒ์•ฝ ๊ด„ํ˜ธ๊ฐ€ ์žˆ๋‹ค๋ฉด ์—ฌ๋Š” ๊ด„ํ˜ธ๋Š” ๊ทธ๋ƒฅ ๋„ฃ๊ณ , ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์˜ค๊ธฐ ์ „๊นŒ์ง€ ๊ณ„์† ์Šคํƒ์— ์šฐ์„ ์ˆœ์œ„๋ฅผ ๋ณด๋ฉฐ ์—ฐ์‚ฐ์ž๋ฅผ ๋„ฃ๋‹ค๊ฐ€ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์˜ค๋ฉด ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์˜ฌ ๋•Œ ๊นŒ์ง€ ์‹น ๋นผ๋ฒ„๋ฆฌ๋Š” ๊ณผ์ •์„ ๊ฑฐ์นœ๋‹ค. ์ด๋ ‡๊ฒŒ ๋ฐ˜๋ณตํ•˜๋ฉด ์•„์ฃผ ์‰ฝ๊ฒŒ ํ›„์œ„ ํ‘œ๊ธฐ์‹์„ ์™„์„ฑํ•  ์ˆ˜ ์žˆ๋‹ค. 

 

ํ›„์œ„ํ‘œ๊ธฐ์‹์œผ๋กœ ๋งŒ๋“ค์–ด์ง„ ์‹์„ ์—ฐ์‚ฐํ•˜๋Š” ๊ฑด ๋” ์‰ฝ๋‹ค. ์•ž์—์„œ๋ถ€ํ„ฐ ์Šคํƒ์— ๋„ฃ์œผ๋ฉด์„œ, ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ์Šคํƒ์— ๋„ฃ์ง€ ์•Š๊ณ  pop์„ ๋‘ ๋ฒˆ ํ•œ๋‹ค. ์ฒซ๋ฒˆ ์งธ pop์€ ๋’ค์— ์˜ฌ ํ”ผ์—ฐ์‚ฐ์ž์ด๊ณ , ๋‘๋ฒˆ์งธ pop์ด ์•ž์— ์˜ฌ ํ”ผ์—ฐ์‚ฐ์ž๋‹ค. ์ด์ œ ๊ทธ ๋‘๊ฐœ๋ฅผ ์—ฐ์‚ฐํ•ด์„œ ๋‹ค์‹œ ์Šคํƒ์— ๋„ฃ๊ณ , ์ด๋ ‡๊ฒŒ ์Šคํƒ์— ์š”์†Œ๊ฐ€ ํ•œ๊ฐœ ๋‚จ์„ ๋•Œ ๊นŒ์ง€ ๋ฐ˜๋ณตํ•˜๋ฉด ์—ฐ์‚ฐ์ด ๋๋‚œ๋‹ค. 

 

์—ฐ์‚ฐํ•˜๋Š” ๋ฌธ์ œ๋Š” ์•„๋ž˜ ๋ฌธ์ œ๋ฅผ ํ’€๋ฉด ๋œ๋‹ค.

https://www.acmicpc.net/problem/1935

 

1935๋ฒˆ: ํ›„์œ„ ํ‘œ๊ธฐ์‹2

์ฒซ์งธ ์ค„์— ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐœ์ˆ˜(1 ≤ N ≤ 26) ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ๊ทธ๋ฆฌ๊ณ  ๋‘˜์งธ ์ค„์—๋Š” ํ›„์œ„ ํ‘œ๊ธฐ์‹์ด ์ฃผ์–ด์ง„๋‹ค. (์—ฌ๊ธฐ์„œ ํ”ผ์—ฐ์‚ฐ์ž๋Š” A~Z์˜ ์˜๋Œ€๋ฌธ์ž์ด๋ฉฐ, A๋ถ€ํ„ฐ ์ˆœ์„œ๋Œ€๋กœ N๊ฐœ์˜ ์˜๋Œ€๋ฌธ์ž๋งŒ์ด ์‚ฌ์šฉ๋˜๋ฉฐ, ๊ธธ์ด

www.acmicpc.net

 

์ฃผ์˜ํ•  ์ ์ด๋ผ๊ณ ๋Š” ์Šคํƒ์— pop์ด๋‚˜ peek ์‹œํ‚ฌ ๋•Œ ์Šคํƒ์ด ๋น„์–ด์žˆ๋Š” ์ง€ ์ž˜ ํ™•์ธํ•ด์ฃผ๋Š” ๊ฒƒ ๋ฐ–์— ์—†๋‹ค!! ๋‚œ์ด๋„๋ฅผ ๊ฐ€๋ ค๋†“๊ณ  ํ‘ธ๋Š” ์ž…์žฅ์—์„œ ๊ฐœ์ธ์ ์ธ ๊ฐ์ƒ์œผ๋กœ๋Š” ์ด๊ฒŒ ์™œ ๊ณจ๋“œ 2์ธ์ง€ ๋ชจ๋ฅด๊ฒ ๋‹ค. ํ›„์œ„ํ‘œ๊ธฐ์‹์˜ ๊ฐœ๋…๋งŒ ์•Œ๊ณ ์žˆ๋‹ค๋ฉด ์†์‰ฝ๊ฒŒ ํ’€๋ฆฌ๋Š” ๋ฌธ์ œ๋‹ค.

 

์ •๋‹ต ์ฝ”๋“œ๊ฐ€ ๊น”๋”ํ•˜๊ฒŒ ์ ํžˆ์ง„์•Š์•˜์ง€๋งŒ ์ฝ๋Š” ๋ฐ๋Š” ๋ฌธ์ œ๊ฐ€ ์—†์„? ๊ฒƒ ๊ฐ™๋‹ค. 

 


์ •๋‹ต์ฝ”๋“œ

import java.util.*;

class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String input = sc.next();
		StringBuilder sb = new StringBuilder();
		Stack<Character> op = new Stack();
		for (int i = 0; i < input.length(); i++) {
			char t = input.charAt(i);
			if ('A' <= t && t <= 'Z') {
				sb.append(t);
			} else {
				// ์—ฐ์‚ฐ์ž ์šฐ์„ ์ˆœ์œ„๋Š” - + ๊ฐ™๊ณ  * / ๊ฐ€ ๋†’๋‹ค
				// ๋ฝ‘์•„์•ผ ๋  ๊ฒฝ์šฐ -> - +์ผ ๋•Œ - + * /๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฝ‘์•„์•ผ๋จ.
				// * / ์ผ ๋•Œ * / ๋ฅผ ๋งŒ๋‚˜๋ฉด ๋ฝ‘์•„์•ผ๋จ.
				if (t == '(') {
					op.push(t);
				}
				if (t == ')') {
					while (!op.isEmpty()) {
						if (op.peek() == '(')
							break;
						else
							sb.append(op.pop());
					}
					op.pop(); // ( ๋„ ๋นผ์ฃผ๊ธฐ
				} else {
					if (!op.isEmpty()) {
					    if (t == '*' || t == '/') {
					        if (op.peek() == '+' || op.peek() == '-')
					            op.push(t);
					        else {
					            while (true) { // ๊ฐ™๊ฑฐ๋‚˜ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์•„๋‹๋•Œ ๊นŒ์ง€
					                if (!op.isEmpty() && (op.peek() == '*' || op.peek() == '/'))
					                    sb.append(op.pop());
					                else
					                    break;
					            }
					            op.push(t);
					        }
					    } else if (t == '-' || t == '+') {
					        if (op.peek() == '(') {
					            op.push(t);
					        } else {
					            while (!op.isEmpty()) { // ๊ฐ™๊ฑฐ๋‚˜ ๋†’์€ ์šฐ์„ ์ˆœ์œ„๊ฐ€ ์•„๋‹๋•Œ ๊นŒ์ง€
					                if (op.peek() == '(')
					                    break;
					                else
					                    sb.append(op.pop());
					            }
					            op.push(t);
					        }
					    }
					} else {
					    op.push(t);
					}
				}

			}
		}
		while (!op.isEmpty()) {
			sb.append(op.pop());
		}
		System.out.println(sb);

	}
}

 

๋„์›€์ด ๋๋‹ค๋ฉด ๋Œ“๊ธ€์ด๋‚˜ ๊ณต๊ฐ ๋ฒ„ํŠผ ํ•œ ๋ฒˆ์”ฉ ๋ˆ„๋ฅด๊ณ  ๊ฐ€์ฃผ์„ธ์š”! ๋กœ๊ทธ์ธ ์•ˆํ•ด๋„ ๋ฉ๋‹ˆ๋‹ค ^_^

 

๋ฐ˜์‘ํ˜•
COMMENT