코드
def solution(quiz):
answer = []
for i in quiz:
if eval(i.split('=')[0]) == int(i.split('=')[1]):
answer.append('O')
else:
answer.append('X')
return answer
["3 - 4 = -3", "5 + 6 = 11"]과 같은 형태로 주어지는 매개변수 quiz가 옳은 수식인지 틀린 수식인지 판별하는 문제이다.
이전 문제에서 수식이 주어질 때 결과값을 구하기 위해 eval()을 사용했던 것이 떠올라 적용시켜 보았다.
입력으로 주어지는 수식은 'X [연산자] Y = Z' 형태임을 문제에서 명시하였기 때문에 '='을 기준으로 분리하여 주어진 수식을 계산한 값과 주어진 값이 같은지 비교하여 O, X를 answer에 추가하도록 하였다.
처음 eval(i.split('=')[0]) == i.split('=')[1]을 실행하였을 때 왼쪽 사진처럼 X, X가 출력되었다.
5+6=11은 맞는 수식임에도 X가 출력되어 eval() 함수의 결과가 어떤 데이터 타입으로 리턴되는지 찾아보니 정수값으로 리턴됨을 알게 되었다.
그래서 eval()과 비교 시 int(i.split('=')[1])로 바꿔주어야 오른쪽 사진처럼 원하는 O 결과가 출력된다.
반응형