본문 바로가기

What I Learnd/TIL

TIL - 여러개의 조건 동시에 적용해서 값 반환하기, 짝수 모두 더하기

[문제]

각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.

 

[풀이]

function solution(angle) {
  if (angle > 0 && angle < 90) {
    return 1; // 예각
  } else if (angle === 90) {
    return 2; // 직각
  } else if (angle > 90 && angle < 180) {
    return 3; // 둔각
  } else if (angle === 180) {
    return 4; // 평각
  }
}

// 테스트
console.log(solution(45)); // 1
console.log(solution(90)); // 2
console.log(solution(120)); // 3
console.log(solution(180)); // 4

 

처음 문제를 보자마자 if문 else if 로 접근해야겠다고 생각해서 아래와 같이 작성 테스트 해보았지만 실패!
연속된 비교를 체이닝하는 대신, 위 정답 코드처럼 각 조건을 별도로 작성해야만 한다!

++위에서 사용된 &&는 javaScript 논리 연산자 중 하나로, 논리적 AND 연산을 수행한다. && 연산자는 주어진 피연산자가 모두 true일 때 true를 반환하고, 그 외의 경우에는 false를 반환하는데, 일반적으로 조건문에서 사용되며 여러 개의 조건을 동시에 검사하는데 유용하다!

function solution(angle) {
    if (0 < angle < 90) {
        return 1;
    } else if (angle === 90) {
        return 2;
    } else if (90 < angle < 180) {
        return 3;
    } else if (angle === 180) {
        return 4;
    }
}

 


[문제]

2. 정수 n이 주어질 때, n이하의 짝수를 모두 더한 값을 return 하도록 solution 함수를 작성해주세요.

 

[풀이]

// 만약 a를 2로 나눈 값이 정수이고 && a가 n보다 작다면
// a의 경우의 수를 모두 더해라

function solution(n) { 
    let answer = 0;
    for (let a = 1; a < n+1; a++) { // for 루프를 사용! a라는 변수를 1부터 시작하여 n을 포함해 n보다 작은 수까지 1씩 증가
        if (a % 2 === 0) {  // a를 2로 나눈 나머지 값이 0과 같다면 정수!
            answer += a;    // answer에 a값을 누적 저장
        }
    }
    return answer;
}
// 아래와 같이 for문에서 바로 짝수를 솎아내주면서 if문 없이, 더 간단하게 만들 수 있었다.

function solution(n) {
    var answer = 0;

    for(let i=2 ; i<=n ; i+=2)  //for 루프를 사용하여 i라는 변수를 2부터 시작하여 n보다 작거나 같을 때까지 2씩 증가
        answer += i;

    return answer;
}