문제
문자열 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.
- 두 수가 n과 m이라면:
">", "=":n >= m
"<", "=":n <= m
">", "!": n > m
"<", "!": n < m
두 문자열은 ineq와 eq가 주어집니다. ineq는 "<"와 ">"중 하나고, eq는 "="와 "!"중 하나입니다. 그리고 두정수 n과 m이 주어질 때, n과 m이 ineq와 eq 조건에 맞으면 1을 아니면 0을 return 하도록 solurion 함수를 완성해 주세요
문제 풀이
딕셔너리와 튜플을 사용하는 방식
딕셔너리와 튜플 사용하면 조건을 명확하게 매핑하여 코드의 복잡성을 줄입니다. 딕셔너리의 키로는 불변성으로 튜플로 조건으로 적합한 자료형입니다.
def solution(lineq, eq, n, m):
conditions ={
(">", "="): n >= m ,
(">", "!"): n > m,
("<", "="): n <= m,
("<", "!"): n < m,
}
return int(conditions[lineq,eq])
딕셔너리 조건을 나타내는 튜플을 키로, 그 조건의 논리적 결과를 값으로 저장합니다. 주어진 조건에 따른 결과를 검색하여 True는 1로, False는 0으로 변환해 반환합니다.
조건문
함수에 전달되는 문자열 변수 ineq와 eq에는 각각 '>'와 '="가 할당될 수 있으며, 이 두조건은 and 연산자로 결합되어 사용될 수 있습니다. 각각 조건에 리턴값을 0 이나 1로 반환하면 문제는 쉽게 풀수 있습니다.
def solution(ineq, eq, n, m):
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
결론
가장 추천하는 방식은 딕셔너리와 튜플 방식이며 복잡한 조건문 없어도 해결하고 조건문은 직관적이지만 가독성 코드 관리하기가 안 좋습니다.
출처
https://school.programmers.co.kr/learn/courses/30/lessons/181934
See Other