1 ] 문제
문자열 형태의 식을 계산하려 합니다. 식은 2개의 자연수와 1개의 연산자('+', '-', '*' 중 하나)로 이루어져 있습니다. 예를 들어 주어진 식이 "123+12"라면 이를 계산한 결과는 135입니다.
문자열로 이루어진 식을 계산하기 위해 다음과 같이 간단히 프로그램 구조를 작성했습니다.
~~~
1단계. 주어진 식에서 연산자의 위치를 찾습니다.
2단계. 연산자의 앞과 뒤에 있는 문자열을 각각 숫자로 변환합니다.
3단계. 주어진 연산자에 맞게 연산을 수행합니다.
~~~
문자열 형태의 식 expression이 매개변수로 주어질 때, 식을 계산한 결과를 return 하도록 solution 함수를 작성하려 합니다. 위 구조를 참고하여 코드가 올바르게 동작할 수 있도록 빈칸에 주어진 func_a, func_b, func_c 함수와 매개변수를 알맞게 채워주세요.
2 ] 해답
def func_a(numA, numB, exp):
if exp == '+':
return numA + numB
elif exp == '-':
return numA - numB
elif exp == '*':
return numA * numB
def func_b(exp):
for index, value in enumerate(exp):
if value == '+' or value == '-' or value == '*':
return index
def func_c(exp, idx):
numA = int(exp[:idx])
numB = int(exp[idx + 1:])
return numA, numB
def solution(expression):
# 사칙연산기호 추출하기
exp_index = func_b(expression)
# 사칙연산을 기준으로 숫자구분하기
first_num, second_num = func_c(expression,exp_index)
# 구분된 숫자를 사칙연산을 통해 연산하기
# 여기서 주의할 점 : exp_index는 인덱스를 찾는 숫자이기에 expression의 index를 대입
result = func_a(first_num,second_num,expression[exp_index])
return result
# The following is code to output testcase.
expression = "123+12"
ret = solution(expression)
# Press Run button to receive output.
print("Solution: return value of the function is", ret, ".")
if exp == '+':
return numA + numB
elif exp == '-':
return numA - numB
elif exp == '*':
return numA * numB
def func_b(exp):
for index, value in enumerate(exp):
if value == '+' or value == '-' or value == '*':
return index
def func_c(exp, idx):
numA = int(exp[:idx])
numB = int(exp[idx + 1:])
return numA, numB
def solution(expression):
# 사칙연산기호 추출하기
exp_index = func_b(expression)
# 사칙연산을 기준으로 숫자구분하기
first_num, second_num = func_c(expression,exp_index)
# 구분된 숫자를 사칙연산을 통해 연산하기
# 여기서 주의할 점 : exp_index는 인덱스를 찾는 숫자이기에 expression의 index를 대입
result = func_a(first_num,second_num,expression[exp_index])
return result
# The following is code to output testcase.
expression = "123+12"
ret = solution(expression)
# Press Run button to receive output.
print("Solution: return value of the function is", ret, ".")
function_c에서 expression[exp_index] 부분 주의해서 대입
'파이썬 Phyton' 카테고리의 다른 글
[파이썬 코딩] 메서드 , def 키워드 란? (1) | 2023.07.16 |
---|---|
[파이썬 코딩] Cos Pro 1급 1차 문제4 - 타임머신 (0) | 2023.07.16 |
[파이썬 코딩] if와 while 차이점 (0) | 2023.07.16 |
[파이썬 코딩] enumerate (0) | 2023.07.16 |
[파이썬 코딩] 자료구조, 스택, 큐 (0) | 2023.07.15 |