
정답
class MarsCalculate:
"""
화성에서의 연산자를 나타내는 클래스
"""
def __init__(self):
pass
def add(self, number):
number += 5
return number
def subtract(self, number):
number -= 7
return number
def multiple(self, number):
number *= 3
return number
def calculate(self, expression):
parts = expression.split()
result = float(parts[0])
for operator in parts[1:]:
if operator == '@':
result = self.multiple(result)
elif operator == '%':
result = self.add(result)
else:
result = self.subtract(result)
return result
T = int(input())
calculator = MarsCalculate()
for t in range(T):
expression = input()
result = calculator.calculate(expression)
print(f"{result:.2f}")
저는 클래스를 만들어 객체 생성을 통해 문제를 풀었지만,
이 방법은 메서드 호출 오버헤드가 많이 발생되므로 그냥 함수로만 푸는게 훨씬 더 효율적입니다.
아래는 AI가 가르쳐 준 코드입니다.
def mars_math(expression):
parts = expression.split()
result = float(parts[0]) # 첫 번째 값은 숫자
# 연산자 적용
for op in parts[1:]:
if op == '@':
result *= 3 # 3을 곱함
elif op == '%':
result += 5 # 5를 더함
elif op == '#':
result -= 7 # 7을 뺌
return result
# 테스트 케이스 개수 입력
T = int(input())
# 각 테스트 케이스 처리
for _ in range(T):
expression = input()
result = mars_math(expression)
print(f"{result:.2f}") # 소수점 둘째 자리까지 출력
이 문제에 대한 가장 효율적인 해결책은 위와 같이 간단한 함수를 사용하는 방식입니다.
이 방법이 효율적인 이유는: