문제
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
오답
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;
}
}
console.log(solution(170))
이 풀이는 틀렸다.
내가 기대한 값은 170이니 3이 출력되어야한다.
하지만 solution함수에서 첫번쨰 if문 0<angle<90 에서 0<angle 이 참이니 해당 조건식을 실행한다.
그래서 1을 리턴하게되니...
해결방법
논리연산자 &&를 사용하여 조건문 안의 두 식이 둘다 참일때만 실행하도록 수정하여 준다.
즉 0<angle 도 참이고, angle <90 이 참일때 실행하도록 !
논리연산자를 잘 모른다면...
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Operators/Logical_AND
논리적 AND (&&) - JavaScript | MDN
논리적 AND (&&) (논리적 연결) 연산자는 모든 불리언 피연산자가 true가 되었을 때 해당 피연산자의 집합은true가 됩니다.
developer.mozilla.org
참고하라,,
대충 둘다 참이어야만 실행한다는 말이다.
function solution(angle) {
if(0<angle && angle<90){
return 1;
}else if(angle === 90){
return 2;
}else if(90<angle && angle<180){
return 3;
}else if(angle === 180){
return 4;
}
}
그리고 또한가지
== 를 === 로 변경해주었따
왜?
== 는 동등 연산자로, 값만 비교하고
=== 는 엄격한 동등 연산자로 값과 타입을 모두 비교하기 때문에
더 정확하게 검사할수있다.
if문 쓸때 식이 2개이면 논리연산자 쓰기 까먹지말자!
'알고리즘 문제' 카테고리의 다른 글
| [프로그래머스]x만큼 간격이 있는 n개의 숫자_js (2) | 2024.12.24 |
|---|---|
| Javascript 자릿수 더하기 (2) | 2024.11.28 |
| 배열의 평균값 (1) | 2024.11.27 |
| 짝수의 합 (3) | 2024.11.25 |
| 정수로 반환하기 (0) | 2024.11.19 |