Python study/Programmers Lv0

[Programmers] 조건 문자열

김쿼드 2023. 7. 15. 21:55

문제 설명

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

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

 


문제 풀이

접근 전략

주어진 문자열에 따라서 조건문을 설정하고, 그에 따라 두 수를 비교하면 끝인데, "<" 이나 "=" , "!" 같은 문자도 저렇게 직접 비교가 되는지는 몰랐음. 


코드

def solution(ineq, eq, n, m):
    if eq == "!":
        if ineq == ">" :
            return int(n > m)
        else :
            return int(n < m)
    else : 
        if ineq == ">" :
            return int(n >= m)
        else :
            return int(n <= m)


결과 및 해석

위의 코드는 주어진 조건에 따라 n과 m을 비교하고, 이에 따라 1 또는 0을 반환하고 끝남. 시간 복잡도는 O(1)이며 공간 복잡도도 O(1)이다.

 

chatGPT 형님은 딕셔너리를 사용해서 더욱 깔끔하게 작성해줬다. 딕셔너리를 사용하여 조건을 정의하면, 각각의 조건을 더 명확하게 이해할 수 있고, 코드의 복잡도를 줄일 수 있게 하는 듯.


def solution(ineq, eq, n, m):
    conditions = {
        '>': { '=': n >= m, '!': n > m },
        '<': { '=': n <= m, '!': n < m }
    }
    return int(conditions[ineq][eq])