def solution(quiz):
answer = []
for q in quiz:
cal = q.split("=")
formulra = cal[0].rstrip()
result = cal[1].lstrip()
formula_result = eval(formulra)
if result == formula_result:
answer.append("O")
else:
answer.append("X")
return answer
이렇게 코드를 짰는데 정답이 안 나왔다
다 X표시...
if문 아래에 print문을 찍어서 if문이 통과하는지 봤는데 하나도 통과를 안 한다
음....뭐가 문제일까......하다가 eval()은 계산을 하니까 그 값이 int인데 배열에서 빼낸 답은 문자열이라는 걸 깨달았다
result에 int를 씌우거나 formula_result에 str을 씌우면 되는 문제였다..!
그리고 이것저것 만져보다 알게 되었는데 eval() 함수는 공백 상관없이 동작하는 것 같다
formula에 cal[0] 뒤에 rstrip()을 뺐는데도 정답이 나온다
그리고 사실 strip() 함수는 쓸 필요도 없었다
def solution(quiz):
...
cal = q.split("=")
formula_result = eval(cal[0])
if int(cal[1]) == formula_result:
...
이렇게 정답의 기준이 되는 =의 오른쪽 부분에 공백이 있든 없든 int형으로 변환해주면 값이 정수가 돼서 공백은 아무런 상관이 없어진다
def valid(equation):
equation = equation.replace('=', '==')
return eval(equation)
def solution(equations):
return ["O" if valid(equation) else "X" for equation in equations]
와..다른 함수를 같이 써서 활용하니까 뭔가 있어보인다
eval() 함수에 답까지 같이 넣는 게 되는구나..!!
식이 맞으면 True, 틀리면 False를 반환하는군
- 천재풀이2
def solution(quiz):
answer = []
for q in quiz:
L,R = q.split(' = ')
a,op,b = L.split()
if op=='+':
result = 'O' if int(a)+int(b)==int(R) else 'X'
answer.append(result)
else:
result = 'O' if int(a)-int(b)==int(R) else 'X'
answer.append(result)
return answer
이 사람은 eval() 함수를 쓰지 않고 답을 찾아냈다
저렇게 변수를 여러 개 선언해서 스플릿으로 나눠지는 문자열을 각 변수에 넣는 게 가능하구나 또 알아간다..
나도 eval() 함수 몰랐으면 이런 식으로 풀었을 것 같다
머리에 지식이 쌓이면서 는 건 꼼수인건가....
다음 알고리즘 문제는 구글링 없이 풀어보자....!
함수를 모르면 모르는대로 노가다라도,,,,,,
- 천재풀이3
def solution(quiz):
answer = []
for q in quiz:
p, a = q.split("=")
if eval(p) == int(a):
answer.append("O")
else:
answer.append("X")
return answer
이 사람은 나랑 풀이법이 비슷한데 스플릿을 이용해서 =을 기준으로 나눈 두 값을 한 번에 변수에 지정해줘서 뭔가 더 깔끔해보인다