Test/Python(20220101~)

[ToDo]프로그래머스.L0.문자열계산하기

kiostory 2022. 10. 19. 20:52

문제 설명

my_string은 "3 + 5"처럼 문자열로 된 수식입니다. 문자열 my_string이 매개변수로 주어질 때, 수식을 계산한 값을 return 하는 solution 함수를 완성해주세요.


제한사항
  • 연산자는 +, -만 존재합니다.
  • 문자열의 시작과 끝에는 공백이 없습니다.
  • 0으로 시작하는 숫자는 주어지지 않습니다.
  • 잘못된 수식은 주어지지 않습니다.
  • 5 ≤ my_string의 길이 ≤ 100
  • my_string을 계산한 결과값은 1 이상 100,000 이하입니다.
    • my_string의 중간 계산 값은 -100,000 이상 100,000 이하입니다.
    • 계산에 사용하는 숫자는 1 이상 20,000 이하인 자연수입니다.
    • my_string에는 연산자가 적어도 하나 포함되어 있습니다.
  • return type 은 정수형입니다.
  • my_string의 숫자와 연산자는 공백 하나로 구분되어 있습니다.

입출력 예my_stringresult
"3 + 4" 7

입출력 예 설명

입출력 예 #1

  • 3 + 4 = 7을 return 합니다.

 

* 첫 번째 생각

공백을 기준으로 식을 나눠서, 

첫 번째, 세 번째는 숫자로,

두 번째는 연산자로 구분해서,

연산자가 뭔가 보고, 해당 연산결과를 return 딱!

def solution(my_string):
    First_no, Cal_character, Second_no = my_string.split(' ')
    First_number = int(First_no)
    Second_number = int(Second_no)
    
    return (First_number + Second_number) if Cal_character == '+' else (First_number - Second_number)

로직 bug 은 없는 것 같은데,

코드 실행에서는 모두 통과하지만,

더보기
실행 결과
테스트 1
입력값 "3 + 4"
기댓값 7
실행 결과 테스트를 통과하였습니다.
테스트 2
입력값 "2 - 8"
기댓값 -6
실행 결과 테스트를 통과하였습니다.
테스트 3
입력값 "17 - 8"
기댓값 9
실행 결과 테스트를 통과하였습니다.

 

채점시에는 실패가 더 많다. 20% ...

왜지...?

더보기
실행 결과
같은 코드로 채점한 결과가 있습니다.
정확성 테스트
테스트 1 〉 실패 (런타임 에러)
테스트 2 〉 실패 (런타임 에러)
테스트 3 〉 실패 (런타임 에러)
테스트 4 〉 실패 (런타임 에러)
테스트 5 〉 실패 (런타임 에러)
테스트 6 〉 실패 (런타임 에러)
테스트 7 〉 실패 (런타임 에러)
테스트 8 통과 (0.02ms, 10.4MB)
테스트 9 통과 (0.02ms, 10.3MB)
테스트 10 〉 실패 (런타임 에러)
채점 결과
정확성: 20.0
합계: 20.0 / 100.0

 

 

* 두 번째 생각

python에는 이발 이라는 함수가 있었다. 주어진 식을 계산해 주는... eval()

def solution(my_string):
    return eval(my_string)