728x90
문제 설명
문자열에 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
두 문자열 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다.
그리고 두 정수 n과 m이 주어질 때, n과 m이 ineq와 eq의 조건에 맞으면 1을 아니면 0을 return 하도록 solution 함수를 완성해 주세요.
첫 번째 풀이
def solution(ineq, eq, n, m):
answer = 0
if ineq== '>' and eq == '=':
if n>=m:
return 1
else:
return 0
if ineq== '<' and eq == '=':
if n<=m:
return 1
else:
return 0
if ineq== '>' and eq == '!':
if n>m:
return 1
else:
return 0
if ineq== '<' and eq == '!':
if n<m:
return 1
else:
return 0
모든 경우의 수를 적어서 하나하나 작성했다
두 번째 풀이
def solution(ineq, eq, n, m):
if ineq == '<' and eq == '=' and n <= m:
return 1
elif ineq == '>' and eq == '=' and n >= m:
return 1
elif ineq == '>' and eq == '!' and n > m:
return 1
elif ineq == '<' and eq == '!' and n < m:
return 1
else:
return 0
ineq, eq, n, m 간의 조건식을 한 줄씩 적어서 코드의 길이를 줄였다
def solution(ineq, eq, n, m):
if ineq == '<' and eq == '=' and n <= m: return 1
elif ineq == '>' and eq == '=' and n >= m: return 1
elif ineq == '>' and eq == '!' and n > m: return 1
elif ineq == '<' and eq == '!' and n < m: return 1
else: return 0
이렇게 쓰는 사람도 많은데 코드 길이는 짧아도 가독성은 위에 코드가 더 좋은 것 같다
세 번째 풀이
def solution(ineq, eq, n, m):
return 1 if (ineq == '<' and eq == '=' and n <= m) else \
1 if (ineq == '>' and eq == '=' and n >= m) else \
1 if (ineq == '>' and eq == '!' and n > m) else \
1 if (ineq == '<' and eq == '!' and n < m) else \
0
삼항연산자로 풀어보고 싶어서 무리수를 두었다
네 번째 풀이
def solution(ineq, eq, n, m):
return int(eval(str(n)+ineq+eq.replace('!', '')+str(m)))
이건 다른 사람의 답변을 보고 참고한 코드이다
replace와 eval을 사용한 것이 인상 깊다
이제 문제를 보면 손이 나가기보다는 어떻게 간단히 풀 수 있을지를 고민하는 습관이 생기는 것 같다
'프로그래밍 > 알고리즘' 카테고리의 다른 글
프로그래머스 - 징검다리 파이썬 (0) | 2023.07.25 |
---|---|
프로그래머스 - 저주의 숫자 3 파이썬 (0) | 2023.07.17 |
프로그래머스 - 입국심사 파이썬 (0) | 2023.07.10 |
프로그래머스 - 징검다리 건너기 파이썬 (0) | 2023.07.03 |
프로그래머스 - 경주로 건설 파이썬 (0) | 2023.06.26 |
댓글