728x90
๋ฐ˜์‘ํ˜•

๋ฌธ์ œ ๐Ÿ˜‚

Forth๋ผ๋Š” ์ปดํ“จํ„ฐ ์–ธ์–ด๋Š” ์Šคํƒ ์—ฐ์‚ฐ์„ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•˜๊ณ  ์žˆ์–ด ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 3+4๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ํ‘œ๊ธฐํ•œ๋‹ค.
 

3 4 + .
 

Forth์—์„œ๋Š” ๋™์ž‘์€ ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.
 

์ˆซ์ž๋Š” ์Šคํƒ์— ๋„ฃ๋Š”๋‹ค.

์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ์Šคํƒ์˜ ์ˆซ์ž ๋‘ ๊ฐœ๋ฅผ ๊บผ๋‚ด ๋”ํ•˜๊ณ  ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์Šคํƒ์— ๋„ฃ๋Š”๋‹ค.

โ€˜.โ€™์€ ์Šคํƒ์—์„œ ์ˆซ์ž๋ฅผ ๊บผ๋‚ด ์ถœ๋ ฅํ•œ๋‹ค.

 

Forth ์ฝ”๋“œ์˜ ์—ฐ์‚ฐ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ๋งŒ๋“œ์‹œ์˜ค. ๋งŒ์•ฝ ํ˜•์‹์ด ์ž˜๋ชป๋˜์–ด ์—ฐ์‚ฐ์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ๊ฒฝ์šฐ โ€˜errorโ€™๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.
 

๋‹ค์Œ์€ Forth ์—ฐ์‚ฐ์˜ ์˜ˆ์ด๋‹ค.
 

์ฝ”๋“œ ์ถœ๋ ฅ
4 2 / . 2
4 3 - . 1

 

 

[์ž…๋ ฅ]
 

์ฒซ ์ค„์— ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค ๊ฐœ์ˆ˜ T๊ฐ€ ์ฃผ์–ด์ง„๋‹ค.  1โ‰คTโ‰ค50
 

๋‹ค์Œ ์ค„๋ถ€ํ„ฐ ํ…Œ์ŠคํŠธ ์ผ€์ด์Šค์˜ ๋ณ„๋กœ ์ •์ˆ˜์™€ ์—ฐ์‚ฐ์ž๊ฐ€ 256์ž ์ด๋‚ด์˜ ์—ฐ์‚ฐ์ฝ”๋“œ๊ฐ€ ์ฃผ์–ด์ง„๋‹ค. ํ”ผ์—ฐ์‚ฐ์ž์™€ ์—ฐ์‚ฐ์ž๋Š” ์—ฌ๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด ์žˆ์œผ๋ฉฐ, ์ฝ”๋“œ๋Š” โ€˜.โ€™๋กœ ๋๋‚œ๋‹ค.

๋‚˜๋ˆ—์…ˆ์˜ ๊ฒฝ์šฐ ํ•ญ์ƒ ๋‚˜๋ˆ„์–ด ๋–จ์–ด์ง„๋‹ค.

 

[์ถœ๋ ฅ]
 

#๊ณผ 1๋ฒˆ๋ถ€ํ„ฐ์ธ ํ…Œ์ŠคํŠธ์ผ€์ด์Šค ๋ฒˆํ˜ธ, ๋นˆ์นธ์— ์ด์–ด ๊ณ„์‚ฐ๊ฒฐ๊ณผ๋ฅผ ์ •์ˆ˜๋กœ ์ถœ๋ ฅํ•˜๊ฑฐ๋‚˜ ๋˜๋Š” โ€˜errorโ€™๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค.

 

๋‚ด ํ’€๐Ÿฆท

# 4874. Forth

# ์ž…๋ ฅ๋ฐ›๊ธฐ
T = int(input())
for tc in range(1, T + 1):
    # ์—ฌ๊ธฐ์„œ ๋ฌธ์ž๋กœ ๋ฐ›์•„์„œ ๋‚˜์ค‘์— ์ˆซ์ž๋กœ ๋”ฐ๋กœ ๋ฐ”๊ฟ”์ค˜์•ผ ํ•จ
    susik = input().split()
    # ๋งˆ์ง€๋ง‰์— ์ ์ด ์žˆ์–ด์„œ ๋ฏธ๋ฆฌ ์ง€์›Œ์คŒ
    susik.pop()
    # ์—ฐ์‚ฐ์„ ๋‹ด์•„์ค„ ๋ฆฌ์ŠคํŠธ ๋งŒ๋“ค๊ธฐ
    num = []
    # ๊ฒฐ๊ณผ๊ฐ’ 1๋กœ ์ดˆ๊ธฐํ™”, 0์ด๋ฉด ์—๋Ÿฌ๋กœ ์ถœ๋ ฅ, 1์ด๋ฉด ๋ฆฌ์ŠคํŠธ์˜ ๋งˆ์ง€๋ง‰ ๊ฐ’ ์ถœ๋ ฅ
    result = 1

    # ์ˆ˜์‹์„ ๋„๋Š” ๋™์•ˆ
    for i in range(len(susik)):
        # ์ˆ˜์‹์ด ํ”ผ์—ฐ์‚ฐ์ž๋ฉด
        if susik[i] not in ['+','-','*','/']:
            # ์ˆ˜์‹์— ๊ทธ ์ˆซ์ž๋ฅผ ์ •์ˆ˜๋กœ ๋ฐ”๊ฟ”์„œ ๋„ฃ์–ด์ค€๋‹ค
            num.append(int(susik[i]))

        # ์ˆ˜์‹์ด ์—ฐ์‚ฐ์ž๋ฉด
        else:
            # ์ˆซ์ž๊ฐ€ ๋‘๊ฐœ ์ด์ƒ ๋‚จ์•„์žˆ์–ด์•ผ ์—ฐ์‚ฐ์ž๋ฅผ ์ฒ˜๋ฆฌํ•ด ์ฃผ๋Š”๋ฐ ์•„๋‹ˆ๋ฉด
            # ๋งž๋Š” ์ˆ˜์‹์ด ์•„๋‹ˆ๋‹ˆ๊นŒ ํ‹€๋ ธ์œผ๋ฏ€๋กœ ๊ฒฐ๊ณผ๊ฐ’์„ 0์œผ๋กœ ๋ฐ”๊ฟ”์ค€๋‹ค
            if len(num) < 2:
                result = 0
                break

            else: # ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ 2 ์ด์ƒ์ด๋ฉด ๋งž๋Š” ์ˆ˜์‹์ด๋ฏ€๋กœ ์ง„ํ–‰
                n1 = num.pop() # ๋‘๊ฐ€์ง€ ์ˆซ์ž๋ฅผ ๋ฝ‘๋Š”๊ฑฐ๋Š” ๋ชจ๋“  ๊ณผ์ •์—์„œ ์ง„ํ–‰๋˜๋ฏ€๋กœ ๋ฏธ๋ฆฌ ๋ฝ‘์•„์คŒ
                n2 = num.pop()
                new = 0

                if susik[i] == '*':
                    new = n2 * n1
                    num.append(new) # ์—ฐ์‚ฐ ํ›„ ๋‹ค์‹œ ๋ฆฌ์ŠคํŠธ์— ๋„ฃ์–ด์ค€๋‹ค
                    # num.append(n2*n1) # => ์ด๋Ÿฐ์‹์œผ๋กœ ๋ฐ”๋กœ ์ฒ˜๋ฆฌํ•˜๋Š”๊ฒŒ ๋” ์ข‹์€ ๋“ฏ
                elif susik[i] == '+':
                    new = n2 + n1
                    num.append(new)
                elif susik[i] == '-':
                    new = n2 - n1
                    num.append(new)
                elif susik[i] == '/':
                    new = n2 // n1 
                    ####### ์ด๋–ผ ๋ชซ ์—ฐ์‚ฐ์ž๋กœ ์•ˆํ•ด์ฃผ๋ฉด ๋‚˜์ค‘์— .0์ด ๋‚˜์˜ค๋Š” ์ผ€์ด์Šค๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค!!####
                    num.append(new)

    # ๋ฆฌ์ŠคํŠธ์˜ ๊ธธ์ด๊ฐ€ 1์ด ์•„๋‹ˆ๋ฉด ์—ฐ์‚ฐ์ž์™€ ์ˆซ์ž๊ฐ€ ๋‚จ์•„์žˆ๊ฑฐ๋‚˜
    # ์•„๋‹ˆ๋ฉด ์•„์˜ˆ ์—†์–ด์ง€๋Š” ํ‹€๋ฆฐ ์ˆ˜์‹์ด๋‹ค
    if len(num) != 1:
            result = 0

    if result:
        print(f'#{tc} {num[-1]}')
    else:
        print(f'#{tc} error')

#####

์ด ๋ฌธ์ œ ํ’€๋ฉด์„œ 2๊ฐ€์ง€๋ฅผ ์ž˜๋ชปํ–ˆ๋Š”๋ฐ....

 

- ์ˆซ์ž๋ฅผ ์ •์ˆ˜๋กœ ์•ˆ ๋ฐ›์•˜์œผ๋ฉด์„œ ๋‚˜์ค‘์— int๋กœ ๊ฐ’์„ ๋„ฃ์ง€ ์•Š์€ ๊ฒƒ..

- ๋‚˜๋ˆ„๊ธฐ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋”ฑ ์ •์ˆ˜๋กœ ๋‚˜๋ˆ  ๋–จ์–ด์ง€๋Š” ๊ฒƒ์ด ์•„๋‹Œ ๊ฒฝ์šฐ๋„ ๋ฐœ์ƒํ•˜๋ฏ€๋กœ // ๋ชซ ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•ด์ฃผ์–ด์•ผ ํ•œ๋‹ค..

์ฐธ๊ณ ํ•จ๋ฉด ์ข‹์„ ๊ฐœ๋…๋“ค โœ๏ธ

์ค‘์œ„ ํ‘œ๊ธฐ๋ฒ•(infix notation)

: ์—ฐ์‚ฐ์ž๋ฅผ ํ”ผ์—ฐ์‚ฐ์ž์˜ ๊ฐ€์šด๋ฐ ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•

  ex) A + B (์šฐ๋ฆฌ๊ฐ€ ํ‰์†Œ์— ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•)

 

ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•(postfix notation)

: ์—ฐ์‚ฐ์ž๋ฅผ ํ”ผ์—ฐ์‚ฐ์ž ๋’ค์— ํ‘œ๊ธฐํ•˜๋Š” ๋ฐฉ๋ฒ•

 ex) AB + (์ปดํ“จํ„ฐ๊ฐ€ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•)

 

ํ›„์œ„ ํ‘œ๊ธฐ๋ฒ•์˜ ์ˆ˜์‹์„ ์Šคํƒ์„ ์ด์šฉํ•ด์„œ ๊ณ„์‚ฐํ•˜๊ธฐ

  1.  ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ์Šคํƒ push
  2. ์—ฐ์‚ฐ์ž๋ฅผ ๋งŒ๋‚˜๋ฉด ํ•„์š”ํ•œ ๋งŒํผ์˜ ํ”ผ์—ฐ์‚ฐ์ž๋ฅผ ์Šคํƒ์—์„œ pop ํ•˜์—ฌ ์—ฐ์‚ฐํ•˜๊ณ , ์—ฐ์‚ฐ๊ฒฐ๊ณผ๋ฅผ ๋‹ค์‹œ ์Šคํƒ์— push
  3. ์ˆ˜์‹์ด ๋๋‚˜๋ฉด, ๋งˆ์ง€๋ง‰์œผ๋กœ ์Šคํƒ์„ popํ•˜์—ฌ ์ถœ๋ ฅ!!!

 

728x90
๋ฐ˜์‘ํ˜•

+ Recent posts