[백준 28086] 파루빗토(파이썬)

문제출처

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

문제분석

수식을 문자열을 입력 받아서 8진수 연산을 하는 문제였다.

피연산자들의 부호를 주의해서 구현하면 된다.

 

문제접근

문제분석과 동일.

 

코드구현

# 2024.05.11(토)
# 미소녀 컴퓨터 파루빗토 짱

import sys
input = sys.stdin.readline


def sol():
    equation = exp()
    operate(equation)


# 표현식 받기
def exp()-> tuple:
    expression = input().strip() # 표현식 자체를 입력받기
    op, A, B = '', '', ''
    for i in range(1, len(expression)):
        c = expression[i:i+1]
        if c == '+' or c == '-' or c =='*' or c == '/':
            op = c
            A = expression[:i]
            B = expression[i+1:]
            break
    return (A, op, B)

# 8진수 사칙연산
def operate(expression:tuple):
    A, op, B = expression
    A = int(A, 8)
    B = int(B, 8)
    C = 0
    
    if op == '+':
        C = A + B
    elif op == '-':
        C = A - B
    elif op == '*':
        C = A * B        
    elif op == '/':
        if B == 0:
            print("invalid")
            return
        C = A // B
    
    if C < 0:
        print('-' + oct(C)[3:])
    else:
        print(oct(C)[2:])



sol()

배운점

  • 일단 구현부터 하고 개선하기
  • 10진수 변환과정을 거치지 않는 채 8진수 연산을 할 수 있는 방법이 있지 않을까 고민하다가 시간을 많이 보내게 되었다. 다른 회원님들에게 물어보니 10진수 연산으로 변환하는 코드를 짰다고 했다. 쉬운 길이 있으면 굳이 어려운 길을 택할 필요는 없는 것 같다.