Algorithm/프로그래머스
[Python] [코딩 기초 트레이닝] / OX퀴즈
code-bean
2024. 8. 29. 12:37
[문제 설명]
덧셈, 뺄셈 수식들이 'X [연산자] Y = Z' 형태로 들어있는 문자열 배열 quiz가 매개변수로 주어집니다.
수식이 옳다면 "O"를 틀리다면 "X"를 순서대로 담은 배열을 return하도록 solution 함수를 완성해주세요.
[제한사항]
1. 연산 기호와 숫자 사이는 항상 하나의 공백이 존재합니다.
단 음수를 표시하는 마이너스 기호와 숫자 사이에는 공백이 존재하지 않습니다.
2. 1 ≤ quiz의 길이 ≤ 10
3. X, Y, Z는 각각 0부터 9까지 숫자로 이루어진 정수를 의미하며,
각 숫자의 맨 앞에 마이너스 기호가 하나 있을 수 있고 이는 음수를 의미합니다.
4. X, Y, Z는 0을 제외하고는 0으로 시작하지 않습니다.
5. -10,000 ≤ X, Y ≤ 10,000
6. -20,000 ≤ Z ≤ 20,000
7. [연산자]는 + 와 - 중 하나입니다.
def solution(quiz):
answer = []
return answer
- 공백 여부가 제한사항에 나와있기 때문에 split() 활용
[A] (내가 쓴 답)
def solution(quiz):
answer = []
for q in quiz :
qu, an = q.split("=")
qu = qu.split()
if qu[1] == '+' :
if int(qu[0]) + int(qu[2]) == int(an) :
answer.append('O')
else :
answer.append('X')
elif qu[1] == '-' :
if int(qu[0]) - int(qu[2]) == int(an) :
answer.append('O')
else :
answer.append('X')
return answer
[A] 다른 답들
def valid(equation):
equation = equation.replace('=', '==')
return eval(equation)
def solution(equations):
return ["O" if valid(equation) else "X" for equation in equations]
* 현업에서는 보안 문제로 eval 함수를 쓰지 않는다고 함.