[js] 간단한 논리 연산 (lv.0, 정답률 85%)

sookyoung.k·2024년 4월 30일
0
post-thumbnail

boolean 변수 x1, x2, x3, x4가 매개변수로 주어질 때, 다음의 식의 true/false를 return 하는 solution 함수를 작성해 주세요.

(x1x2) ∧ (x3x4)

∨과 ∧의 진리표는 다음과 같습니다.

xyx ∨ yx ∧ y
TTTT
TFTF
FTTF
FFFF

🫡 나의 풀이

const calc1 = (a, b) => {
    if (a ==b && b == false) return false;
    return true;
}
const calc2 = (c, d) => {
    if (c == d && c == true) return true;
    return false
}

function solution(x1, x2, x3, x4) {
    return calc2(calc1(x1, x2), calc1(x3, x4));
}

진리표를 보면서 조건을 최소화한 후 계산 함수를 두 개 따로 만들었다.

  • ∨ 가 들어간 연산의 경우 F가 나오는 단 하나의 경우의 수를 제외한 후 나머진 true 반환

  • ∧ 가 들어간 연산의 경우 T가 나오는 단 하나의 경우의 수를 제외한 후 나머지는 false 반환

😯 다른 풀이 1

function solution(x1, x2, x3, x4) {
    return (x1||x2) && (x3||x4)
}

엥 ㅡㅡ 머야 이렇게 풀 수 있네 ㅡㅡ

내가 쓴 조건을 다르게 풀이하면 의 경우 둘 중 하나만 참이면 참이 나오는 조건이다.

의 경우 둘 중 하나만 거짓이어도 거짓이 나오는 조건이다.

aㅏ...

😲 다른 풀이 2

const solution = (x1, x2, x3, x4) => {
    return (x1+x2)*(x3+x4) ? true : false;
}

놀라운 사실을 알았다! Boolean 값을 + 연산자로 계산할 수 있다.

Boolean 값의 + 연산

  • true + true 는 1 + 1 = 2
  • true + false 는 1 + 0 = 1
  • false + false 는 0 + 0 = 0

이처럼 Boolean 값을 + 연산자로 계산하면, true는 1로, false는 0으로 취급되어 산술 연산이 수행된다.

오... 이런 방식은 상상도 못했네욤... 신기하다!

profile
영차영차 😎

0개의 댓글