๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

[์Šคํƒ] 4. ํ›„์œ„์‹ ๊ณ„์‚ฐ

์‹œํ๋ฆฌํ‹ฐ์ง€ํ˜ธ 2024. 1. 10.
4. ํ›„์œ„์‹ ์—ฐ์‚ฐ(postfix)
 

์„ค๋ช…

ํ›„์œ„์—ฐ์‚ฐ์‹์ด ์ฃผ์–ด์ง€๋ฉด ์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์„ธ์š”.

๋งŒ์•ฝ 3*(5+2)-9 ์„ ํ›„์œ„์—ฐ์‚ฐ์‹์œผ๋กœ ํ‘œํ˜„ํ•˜๋ฉด 352+*9- ๋กœ ํ‘œํ˜„๋˜๋ฉฐ ๊ทธ ๊ฒฐ๊ณผ๋Š” 12์ž…๋‹ˆ๋‹ค.

์ž…๋ ฅ

์ฒซ ์ค„์— ํ›„์œ„์—ฐ์‚ฐ์‹์ด ์ฃผ์–ด์ง‘๋‹ˆ๋‹ค. ์—ฐ์‚ฐ์‹์˜ ๊ธธ์ด๋Š” 50์„ ๋„˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

์‹์€ 1~9์˜ ์ˆซ์ž์™€ +, -, *, / ์—ฐ์‚ฐ์ž๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„๋‹ค.

์ถœ๋ ฅ

์—ฐ์‚ฐํ•œ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•ฉ๋‹ˆ๋‹ค.

์˜ˆ์‹œ ์ž…๋ ฅ 1 

352+*9-

์˜ˆ์‹œ ์ถœ๋ ฅ 1

12

 

<<ํ’€์ด>>

 

import java.util.Scanner;
import java.util.Stack;

class Main {
    private int solution(String str) {
        Stack<Integer> stack = new Stack<>();
        for (char x : str.toCharArray()) {
            if (Character.isDigit(x)) stack.push(x - 48);
            else {
                int rt = stack.pop();
                int lt = stack.pop();
                if (x == '+') stack.push(lt + rt);
                else if (x == '-') stack.push(lt - rt);
                else if (x == '*') stack.push(lt * rt);
                else if (x == '/') stack.push(lt / rt);
            }

        }
        return stack.get(0);
    }


    public static void main(String[] args) {
        Main T = new Main();
        Scanner in = new Scanner(System.in);
        String str = in.next();
        System.out.println(T.solution(str));
    }
}

 

์ด ๋ฌธ์ œ๋Š” ํ›„์œ„์‹ ์—ฐ์‚ฐ์ด๋ผ๊ณ  ํ•ด์„œ ์›๋ž˜ ์ค‘์œ„์‹ ์—ฐ์‚ฐ์ด ๋””ํดํŠธ์ด๋ฉด ํ›„์œ„์‹์€ ์—ฐ์‚ฐ๊ธฐํ˜ธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ์ˆซ์ž์˜ ๋งˆ์ง€๋ง‰์— ๋‘”๋‹ค.

 

ํ’€์ด๋ฐฉ์‹

์šฐ์„ , toCharArray๋ฅผ ํ™œ์šฉํ•ด์„œ ์ˆซ์ž์ด๋ฉด stack์— ๋‹ด์•„์ค€๋‹ค. ๊ทธ๋Ÿฌ๋‹ค๊ฐ€ ์—ฐ์‚ฐ์ž๋ฅผ๋งŒ๋‚˜๊ฒŒ ๋˜๋ฉด push๋ฅผ ํ†ตํ•ด ๋จผ์ € ๋‚˜์˜ค๋Š” ๊ฐ’์€ ์˜ค๋ฅธ์ชฝ์— ์žˆ๋‹ค๊ณ  ํ•ด์„œ rt์— ๋„ฃ์–ด์ฃผ๊ณ  ๊ทธ ๋‹ค์Œ ๊ฐ’์€ lt์— ๋„ฃ์–ด์ค€๋‹ค. ๊ทธ๋ ‡๊ฒŒ ํ•ด์„œ if ๋ฌธ์œผ๋กœ ๊ทธ ์—ฐ์‚ฐ์ž์˜ ์กฐ๊ฑด์— ๋งž๊ฒŒ ๊ตฌํ•˜๊ณ  ๋‹ค์‹œ stack์— ๋„ฃ์–ด์ค€๋‹ค.

 

์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ˜๋ณตํ•ด์„œ ๋ฌธ์ œ๋ฅผ ํ‘ธ๋Š” ๋ฌธ์ œ์ด๋‹ค. !! 

 

์—ฌ๊ธฐ์„œ pop์„ ๋‘ ๋ฒˆ ํ•ด๋ฒ„๋ฆฌ๋ฉด ์•ˆ ๋˜์ง€ ์•Š๋‚˜!? stack ์— ๊ฐ’์ด ์—†์œผ๋ฉด ์–ด๋–ป๊ฒŒ ?? ๋ผ๊ณ  ์ƒ๊ฐํ•  ์ˆ˜๋„ ์žˆ์ง€๋งŒ ์‚ฌ์‹ค์ƒ ์—ฐ์‚ฐํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฌด์กฐ๊ฑด ๋‘ ๊ฐœ์˜ ํ”ผ์—ฐ์‚ฐ์ž๊ฐ€ ๋“ค์–ด๊ฐ€๊ธฐ ๋งˆ๋ จ์ด๋‹ค. ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋„ฃ์–ด์ค€ ๋ฌธ์ž์—ด์ด ์ค‘์œ„์‹์„ ํ›„์œ„์‹์œผ๋กœ ๋งŒ๋“ค์—ˆ๊ธฐ์—, ์ด๋Ÿฌํ•œ ํ’€์ด๋Š” ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.

 

์ฒ˜์Œ ๋ณด๋Š” ํ˜•ํƒœ์˜€๊ณ  ์ด๋Ÿฌํ•œ ๋ฐฉ์‹์ด ๋‚˜์˜ค๋ฉด ์ด ๋…ผ๋ฆฌ์˜ ํ๋ฆ„์„ ๊นŒ๋จน์ง€ ๋ง๊ณ  ์‚ฌ์šฉํ•˜์ž!!

 

<<์ถ”๊ฐ€ ๊ณต๋ถ€>>

 

'0' '1' ๊ฐ™์€ char๋Š” ์•„์Šคํ‚ค์ฝ”๋“œ๋กœ ํ–ˆ์„ ๋•Œ '0'->48 ์ด๊ณ  '1' -> 49 ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ด๋ฅผ ์ง„์งœ ์ˆซ์ž๋กœ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด์„œ๋Š” -48 ์„ ํ•˜๋ฉด ๋œ๋‹ค!

 

 

๋Œ“๊ธ€