https://school.programmers.co.kr/learn/courses/30/lessons/120907
💡문제풀이 (접근방식)
1. 'X [연산자] Y= Z ' 형태인 문자열을 하나씩 꺼낸다.
2. '=' 을 기준으로 분리한다.
3. X, [연산자] , Y를 공백기준으로 분리하고 , X,Y,Z를 int 형으로 변환해준다.
4. 만일 연산자가 '+(-)' 라면 x+y(x-y) 를 계산하여 결과를 반환한다.
5. 만일 계산결과가 Z와 동일하다면 정답에 'O' , 아닐경우 'X' 를 추가해준다.
def solution(quiz):
answer = []
for i in quiz :
#'='를 기준으로 분리
xy , z = i.split('=')[0] , i.split('=')[1]
#계산하기위해 x와 y 분리하기
x , oper , y = xy.split()[0] , xy.split()[1] , xy.split()[2]
#int형으로 변환
x , y, z = int(x) , int(y) , int(z)
#만일 연산자에 따른 계산
if oper == '+' :
result = x+y
else :
result = x-y
#만일 계산결과와 z 가 동일하다면 O, 아니라면 X
if result == z :
answer.append("O")
else :
answer.append("X")
return answer
🤔 새롭게 알게된 함수 Eval()
이전에 문제 접근 방식에서는 문자열 표현식을 계산하지 못해서 공백을 기준으로 분리해서 진행했다. Eval() 함수를 사용하면 문자열 표현식을 연산가능하게 해주는 기능을 한다. 하지만 해당 함수의 사용은 다음과 같은 보안 문제로 사용하지 않는걸 추천한다고 한다.
https://bluese05.tistory.com/64
def solution(quiz):
answer = []
for i in quiz :
#'='를 기준으로 분리
xy , z = i.split('=')[0] , i.split('=')[1]
xy , z = eval(xy) , int(z)
if xy == z :
answer.append("O")
else :
answer.append("X")
return answer
'STUDY > Algorithm' 카테고리의 다른 글
[Algorithm] DFS / BFS (0) | 2024.05.03 |
---|---|
[Algorithm] 그리디 알고리즘 (0) | 2024.04.30 |
[Algorithm] 알고리즘(코딩테스트) 스터디 계획 (0) | 2024.04.25 |
[Algorithm] 배열과 리스트 (0) | 2024.04.16 |
[Algorithm] 시간복잡도 (0) | 2024.04.15 |