문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 수가 n과 m이라면
">", "=" : n >= m
"<", "=" : n <= m
">", "!" : n > m
"<", "!" : n < m
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
1 ≤ n, m ≤ 100
ineq eq n m result
"<" "=" 20 50 1
">" "!" 41 78 0
입출력 예 #1
20 <= 50은 참이기 때문에 1을 return합니다.
입출력 예 #2
41 > 78은 거짓이기 때문에 0을 return합니다.
def solution(ineq, eq, n, m):
answer = 0
if ineq == ">" and eq =="=":
if n >= m:
return 1
else:
return 0
elif ineq == ">" and eq =="!":
if n > m:
return 1
else:
return 0
elif ineq == "<" and eq == "=":
if n <= m:
return 1
else:
return 0
elif ineq == "<" and eq == "!":
if n < m:
return 1
else:
return 0
def solution(ineq, eq, n, m):
answer = 0
if n > m and ineq ==">":
answer = 1
elif n < m and ineq == "<":
answer = 1
elif n == m and eq == "=":
answer = 1
return answer
def solution(ineq, eq, n, m):
answer = 0
if (ineq, eq) == ('<', '='):
answer = int(n <= m)
elif (ineq, eq) == ('>', '='):
answer = int(n >= m)
elif (ineq, eq) == ('<', '!'):
answer = int(n < m)
elif (ineq, eq) == ('>', '!'):
answer = int(n > m)
else:
return 'wrong input'
return answer
def solution(ineq, eq, n, m):
if ineq+eq == ">=":
answer = bool(n >= m)
elif ineq+eq == "<=":
answer = bool(n <= m)
elif ineq+eq == ">!":
answer = bool(n > m)
elif ineq+eq == "<!":
answer = bool(n < m)
return 1 if answer == True else 0
def solution(ineq, eq, n, m):
answer = 0;
if n >= 1 and n <= 100 and m >= 1 and m <= 100:
compareChars = {
">=": n >= m,
"<=": n <= m,
">!": n > m,
"<!": n < m
};
answer = int(compareChars[ineq + eq]);
return answer;
def solution(ineq, eq, n, m):
return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
eval() 함수는 파이썬에서 주어진 문자열을 Python 표현식으로 실행하고 그 결과를 반환하는 내장 함수이다. 예를 들어, eval()을 사용하면 문자열로 표현된 파이썬 코드나 수식을 실행할 수 있다.
eval(expression, globals=None, locals=None)
expression: 실행할 파이썬 표현식이 들어있는 문자열이다.globals (선택적): 글로벌 네임스페이스로, 기본값은 현재 네임스페이스이다.locals (선택적): 로컬 네임스페이스로, 기본값은 현재 네임스페이스이다.수학식 평가
expression = "3 + 4 * 2"
result = eval(expression)
print(result) # 출력: 11
변수 사용
x = 10
expression = "x * 2"
result = eval(expression)
print(result) # 출력: 20
함수 호출
def add(a, b):
return a + b
expression = "add(3, 5)"
result = eval(expression)
print(result) # 출력: 8
eval()은 코드 실행을 다루기 때문에 보안 위험이 있다. 사용자가 입력한 값을 eval()로 실행하면 악의적인 코드가 실행될 수 있다. 예를 들어, 사용자 입력으로 os.system('rm -rf /')와 같은 명령이 전달되면 시스템에 치명적인 영향을 미칠 수 있다.eval() 대신 다른 방법(예: ast.literal_eval())을 사용하는 것이 좋다.eval()의 대안ast.literal_eval(): eval()과 비슷하지만, 수학식, 리스트, 튜플, 딕셔너리 등 안전한 리터럴 표현만을 평가한다. 위험한 코드 실행을 방지할 수 있다.
import ast
result = ast.literal_eval("[1, 2, 3]")
print(result) # 출력: [1, 2, 3]
결론적으로, eval()은 매우 유용하지만, 주의 깊게 사용해야 하며, 가능하면 다른 방법으로 대체할 수 있는지 고려하는 것이 좋다.
다른 사람들의 풀이 방법을 찾아보면서 모르는 함수에 관해, 이에 대한 주의점 및 대안까지 알게되는 시간을 가졌다.
앞으로도 공부를 꾸준히하되, 모르는 부분을 이런 방식으로 채워나가면 될 것 같다는 생각이 들었다.