IdoCleanCode
article thumbnail
[파이썬] 프로그래머스 코딩 기초 트레이닝 - 조건 문자열

문제

문자열 따라 다음과 같이 두 수의 크기를 비교하려고 합니다.

  • 두 수가 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

[코딩 테스트] 프로그래머스 - 문제 풀이 모음

profile

IdoCleanCode

@IdoCleanCode

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!