문제 설명
- 예각 : 0 < angle < 90
- 직각 : angle = 90
- 둔각 : 90 < angle < 180
- 평각 : angle = 180
제한사항
- 0 < angle ≤ 180
- angle은 정수입니다.
입출력 예
angle | result |
70 | 1 |
91 | 3 |
180 | 4 |
입출력 예 설명
입출력 예 #1
- angle이 70이므로 예각입니다. 따라서 1을 return합니다.
입출력 예 #2
- angle이 91이므로 둔각입니다. 따라서 3을 return합니다.
입출력 예 #2
- angle이 180이므로 평각입니다. 따라서 4를 return합니다.
단순 연산만 하다가
갑자기 이렇게 난이도가 뛰어버린다구....?
반환 해야하는 값의 종류가 4가지 였기 때문에
if-else if-else문을 이용했다.
if(0< angle < 90) return 1;
else if(angle = 90) return 2;
else if(90 < angle < 180) return 3;
else return 4;
처음에는 이런식으로 범위만 지정해서 입력했더니
return값이 1만 나오는 문제가 발생했다.
왜지? 잘못 쓴게 없는 것 같은데 왜 적용이 안되는지 이해가 되지 않아서 검색해 봤더니
if문에서 두가지 이상의 조건을 만족시키려면 논리연산자를 사용해야 한다는 것이다!
즉, 여기서 예를 든다면
0 < angle < 90 앵글이 예각, 1의 값을 반환하기 위해서는
'0 < angle' 와 'angle < 90' 두 개의 조건 모두를 만족시킨다는 전제를 자바스크립트로 표현해줘야 한다는 소리!
if(0 < angle && angle < 90) return 1
이렇게 표현해 줄 수 있다.
또한,
'angle = 90' 이라고만 표현한다면 직각 이상의 앵글에서 무조건 2만 반환되는 문제를 만나게 된다.이는 'angle == 90' 동등 연산자를 사용해주어야 하는데 '='과 '=='가 무슨 차이가 있는지 몰라서 왜? 굳이? 라는 의문이 들어 구글링 해보았다.
= : 대입 연산자. 말 그대로 값을 넣을 때 사용
var a = 1;
let b = 3;
const c = '5';
== : 동등(coercive) 연산자. 값을 비교한다.
var a = 3;
var b = '3';
let c = 3;
a == b// true
a == c// true
b == c// true
=== : 일치(strict) 연산자
var a = 3;
var b = '3';
let c = 3;
a === b// false
a === c// true
b === c// false
그러니까.. 이런 얘기인건가?
'if (angle=90)' 을 말로 풀면 '만약 앵글이 90이면~'
'if (angle==90)' 을 말로 풀면 '만약 앵글이 90과 일치하면~'
....뭐가 다르지!
아무튼 자바스크립트는 섬세한 아이구나... 적어도 동등연산자는 써줘야 한댄다..
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 return 4;
}
우당탕탕 해결!
'알고리즘 테스트 > 프로그래머스' 카테고리의 다른 글
문자열 내 p와 y의 개수 [JS] (0) | 2023.05.26 |
---|---|
짝수의 합 [JS] (0) | 2023.05.26 |
나이 출력 [JS] (0) | 2023.05.26 |
두 수의 나눗셈 [JS] (0) | 2023.05.26 |
두 수의 합 [JS] (0) | 2023.05.26 |