PROGRAMMERS - 조건 문자열 [기초트레이닝]

GI JUNG·2023년 7월 2일
2

algorithm

목록 보기
10/28
post-thumbnail
post-custom-banner

🍀 조건 문자열

문제는 쉽지만 falsy 또는 truthy 값을 boolean값 사이간에 자유롭게 변환하는 방법에 대해서 터득했기 때문에 정리겸 올린다. 즉 1 <-> true, 0 <-> false임을 나타낸다.

1️⃣ Python

먼저 python을 보자면 문제에서 true는 1로 false는 0으로 변환하여 return하라고 한다. 기본적으로 조건문의 평가된 값은 boolean값으로 이것을 1또는 0으로 바꾸기 위해서는 아래와 같이 if-else 구문이 더 필요하게 된다.


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

    if eq == "!":
        if ineq == "<":
            return 1 if n < m else 0
        
        return 1 if n > m else 0

따라서 반복적인 if-else 구문에 대해서 좀 더 코드를 간결하게 줄여보고 싶다는 생각에 how to convert truty and falsy value to 1 and 0 in python로 구글링을 하니 여기에서 찾을 수 있었다. truthy or falsy 값을 int로 형변환을 해 주면 원하는 대로 출력할 수 있다.

바뀐 코드 👇

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

2️⃣ Javascript

python에서 int() 메서드로 형 변환을 해 주었는데 javascript는 Number()라는 builtin method가 있다. 혹시나 이게 되려나 해서 적용해 봤는데 된다!!!

function solution(ineq, eq, n, m) {
    if (eq === "=") return ineq === "<" ? Number(n <= m) : Number(n >= m)
    
    return ineq === "<" ? Number(n < m) : Number(n > m)
}

추가적으로 logical Not Not 연산자 !!를 사용하면 truthy or falsy 값을 true 또는 false로 간편하게 바꿀 수 있다. !!이 아니더라도 Boolean()을 사용하면 똑같은 결과를 얻을 수 있다.

!가 두 개 붙었을까 생각해봤는데 !를 하나로 이용하면 부정 연산으로서 true 또는 false값만을 뱉는데 다시 not연산을 하여 값이 가지고 있는 것이 true인지 false인지 알 수 있기 때문에 두 개가 붙은 것 같다.

	test = 0
	console.log(test) // 0
	console.log(!test) // true
	console.log(!!test) // false

사용예시는 아래와 같다.

// using Logical Not Not operator
!!false; // false
!!undefined; // false
!!null; // false
!!NaN; // false
!!0; // false
!!''; // false

// using Boolean() method
Boolean(false); // false
Boolean(undefined); // false
Boolean(null); // false
Boolean(NaN); // false
Boolean(0); // false
Boolean(''); // false

🚀 마치며

문제를 풀면서 스스로 이게 가능한가? 다른 방법은 없나?라는 고민을 가지고 문제를 풀 때 한 문제를 풀더라도 많이 배울 수 있는 것 같다. 결국 코드를 줄여보고자 하는 의지에서 다른 개념을 배울 수 있었다. 이렇게 꼬리에 꼬리를 물어 많은 지식을 얻는 것은 좋지만 무지 드릴링이 심한 나이기에 적당한 선에서 멈추는 것도 필요하다.

📚참고

convert truthy and falsy value to int
convert between truthy and falsy value to boolean type

profile
step by step
post-custom-banner

0개의 댓글