문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
n
과 m
이라면n
>= m
n
<= m
n
> m
n
< m
두 문자열 ineq
와 eq
가 주어집니다. ineq
는 "<"와 ">"중 하나고, eq
는 "="와 "!"중 하나입니다. 그리고 두 정수 n
과 m
이 주어질 때, n
과 m
이 ineq
와 eq
의 조건에 맞으면 1을 아니면 0을 return하도록 solution 함수를 완성해주세요.
n
, m
≤ 100ineq | eq | n | m | result |
---|---|---|---|---|
"<" | "=" | 20 | 50 | 1 |
">" | "!" | 41 | 78 | 0 |
입출력 예 설명
입출력 예 #1
입출력 예 #2
def solution(ineq, eq, n, m): if ineq == ">" and eq == "=": if n >= m: answer = 1 else: answer = 0 elif ineq == ">" and eq == "!": if n > m: answer = 1 else: answer = 0 elif ineq == "<" and eq == "=": if n <= m: answer = 1 else: answer = 0 elif ineq == "<" and eq == "!": if n < m: answer = 1 else: answer = 0 return answer
코드 간단 소개
- if - elif - else를 사용하여 풀이하였다.
- 가장 먼저 ineq, eq값에 따라 조건을 모두 작성하여 4개로 나눈다.
- ineq == ">" and eq == "="
- ineq == ">" and eq == "!"
- ineq == "<" and eq == "="
- ineq == "<" and eq == "!"
- 각 조건에 따라 >,=이면 >= 으로, >,!이면 >으로 n, m을 비교하여 참이면 1, 거짓이면 0을 answer에 저장하고 return한다.
def solution(ineq, eq, n, m): return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
- eval()안에 들어갈 문자열을 만든다.
- 숫자 n, m을 문자열로 바꾸기 위해 str()을 사용해 변환한다.
- ineq는 그대로 사용하기 때문에 그대로
+
를 한다.- eq에서
=
는 그대로 사용하지만!
는 사라지기 때문에 replace('!','')으로!
를 공백으로 바꾸어+
한다.- 따라서 str(n)+ineq+eq.replace('!', '')+str(m))를 예시
- n = 2, ineq='>', eq='=', m = 3
'2 >= 3'
- n = 6, ineq='<', eq='!', m = 9
'6 < 9'
- eval()에서 위 문자열을 계산한다.
- eval()에서 계산된 값을 int로 반환하여 return한다.
매개변수로 expression(식)을 문자열로 받아서 실행한다.
# 파이썬 eval(expression) 예제 # 1. 문자열 덧셈 a = eval('"BlockDMask" + "blog"') print(f"1. eval('\"BlockDMask\"' + '\" blog\"') : {a}") # 2. 숫자 덧셈 b = eval("100 + 32") print(f'2. eval("100 + 32") : {b}') # 3. 내장 함수 abs c = eval("abs(-56)") print(f'3. eval("abs(-56)") : {c}') # 4. 리스트 길이 d = eval("len([1,2,3,4])") print(f'4. eval("len([1,2,3,4])") : {d}') # 5. round 함수 e = eval("round(1.5)") print(f'5. eval("round(1.5)") : {e}')