본문 바로가기

코딩테스트

01 기초적인 문자열 구현 - 큰 수식 찾기

큰 수식 찾기

 

정수와 더하기, 빼기, 곱하기 기호로 이루어진 두 개의 수식 A, B가 주어진다. 주어지는 수식은 모두 올바른 수식이며, 구체적으로는 다음 조건들을 만족한다.


• 수식의 첫 문자와 마지막 문자는 항상 숫자이다.
• 수의 맨 첫 문자가 0인 경우는 없다. 예를 들어 031과 같은 수는 주어지지 않는다.
• 연산자가 최소 하나 이상 포함되어 있다.
• 연산자가 붙어서 등장하는 경우는 없다.
• 수식에 포함된 정수와 수식의 계산 결과는 모두 절댓값으로 10^14 이하이다.


각 수식을 연산자 우선순위에 따라 계산했을 때, 두 수식의 계산 결과 중 더 큰 값을 출력 하시오. 두 수식의 계산 결과는 항상 다름이 보장된다.

 

 

수식 계산하기(eval 함수 사용하기)

 

# 첫시도
>>> import sys
>>> input = sys.stdin.readline()
>>> N, M = map(input().split())

>>> A = eval(input())
>>> B = eval(input())

TypeError: 'str' object is not callable
make: *** [cmd] Error 1

 

 

 

QnA
코드를 보면 몇 가지 문제가 있습니다. 먼저, map 함수를 사용할 때 올바른 구문을 사용해야 합니다. map 함수는 함수와 반복 가능한(iterable) 객체를 받아서 각 요소에 함수를 적용하는데, 이를 제대로 사용하지 않았습니다. 

그리고 eval 함수도 조심스럽게 사용해야 합니다. 보안상의 이유로 사용자 입력을 직접 eval에 전달하는 것은 권장되지 않습니다.

 

네; 죄송해요;;

 

 

최댓값 뽑아내기

 

nums=[A,B]
maxd=nums[0]
for i in range(len(nums)):
  if maxd>=nums[i]:
     maxd=maxd
  else:
      maxd=nums[i]

print("최대값은 :", maxd)

 

라고 생각했으나 해설 보고 허무해서 던졌습니다

 

 


해설

 

eval() 함수

수식 결과를 반환해줌

 

>>> A, B = input().split()
>>> print(max(eval(A), eval(B)))

 

 

간단하게 생각합시다...