728x90
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/120907
내 풀이
처음에는 저번에 풀었던 방식을 참고하여 다음과 같이 풀어보았다.
[실패 코드]
# 수식이 옳은지 판단하는 함수
def exp(numbers):
# "=" 연산자를 기준으로 식을 나눔
expression = numbers.split(" = ")
# ex. 3 - 4 ==> 3 + -4 와 같은 형태로 변경하여 합을 구하고, 그 값이 수식이랑 맞는지 확인
if sum(int(i) for i in expression[0].replace(" - ", " + -").split("+")) == int(expression[-1]):
return "O"
else:
return "X"
def solution(quiz):
answer = []
for i in quiz:
# 수식을 계산하는 함수를 수식마다 적용하여 answer을 구함
answer.append(exp(i))
return answer
그러나, 이렇게 푸니 테스트 케이스는 모두 통과했지만 런타임 에러가 났다ㅠㅠ
이를 바탕으로 다른 방법으로 풀어보았다.
[정답 코드]
# 수식이 옳은지 판단하는 함수
def exp(numbers):
# 공백을 기준으로 식을 나눔
expression = numbers.split(" ")
# 주어진 수식은 일정한 형태를 보이므로, 연산자는 1번 인덱스에 위치하며, 계산할 값은 각각 0번, 2번 인덱스에 위치함.
if expression[1] == "+":
tmp = int(expression[0]) + int(expression[2])
else:
tmp = int(expression[0]) - int(expression[2])
# 계산한 수식 값이 결과값(수식의 마지막 값)과 일치하면 O, 불일치하면 X 반환
if tmp == int(expression[-1]):
return "O"
else:
return "X"
def solution(quiz):
answer = []
for i in quiz:
# 수식을 계산하는 함수를 수식마다 적용하여 answer을 구함
answer.append(exp(i))
return answer
위의 방법보다 직관적인 방법으로 풀어보았는데 통과했다!
다른 사람 풀이
다른 사람들은 eval 내장함수를 쓴 경우가 많은데,
이는 좋지 않은 코드이므로, 생략한다!
느낀점
처음에는 복잡한 방법으로 풀어봤는데, 꼭 어려운 풀이가 아니라 단순한 풀이가 오히려 답이 될 수 있음을 다시 한 번 깨닫는 문제였다.
항상 제일 먼저 간단하게 생각해보도록 하자!
728x90
'코딩테스트 > PYTHON' 카테고리의 다른 글
[프로그래머스][PYTHON] Lv. 0 캐릭터의 좌표 (0) | 2024.03.12 |
---|---|
[프로그래머스][PYTHON] Lv. 0 직사각형 넓이 구하기 (0) | 2024.03.11 |
[프로그래머스][PYTHON] Lv. 0 문자열 계산하기 (0) | 2024.03.06 |
[프로그래머스][PYTHON] Lv. 0 가까운 수 (0) | 2024.03.03 |
[프로그래머스][PYTHON] Lv. 0 소인수분해 (0) | 2024.03.02 |