Lv. 0 - 각도기 풀이 과정
문제 설명
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다.
각 angle
이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution
함수를 완성해주세요.
- 예각 : 0 <
angle
< 90 - 직각 :
angle
= 90 - 둔각 : 90 <
angle
< 180 - 평각 :
angle
= 180
제한사항
- 0 <
angle
≤ 180 -
angle
은 정수입니다.
입출력 예
num1 | result |
---|---|
70 | 1 |
91 | 3 |
180 | 4 |
입출력 예 설명
3-1) 입출력 예 설명 #1
angle
이 70이므로 예각입니다. 따라서 1을 return합니다.
3-2) 입출력 예 설명 #2
angle
이 91이므로 둔각입니다. 따라서 3을 return합니다.
3-3) 입출력 예 설명 #3
angle
이 180이므로 평각입니다. 따라서 4를 return합니다.
프로그래머스에서 제공한 코드
처음 프로그래머스에서 작성된 코드는 아래와 같다.
function solution(angel) {
var answer = 0;
return answer;
}
문제 풀이
// 처음 적용
const solution = angle => {
if(angle > 0 && angle < 91) {
return 1;
}else if(angle > 90 && angle < 180){
return 3;
}else if(angle == 180){
return 4;
}
}
// 결과
테스트 2 > 실패 (0.04ms, 33.6MB)
// 수정 후 성공 : if문 첫 번째 구절에서 angle < 91 을 90으로 변경 및 직각 추가
const solution = angle => {
if (angle > 0 && angle < 90) return 1;
else if(angle === 90) return 2;
else if(angle < 180) return 3;
else return 4;
}
함수 선언
- 화살표 함수를 사용하여
angle
매개변수를 받는다.
풀이
- 처음 입출력 예 설명에 맞춰 if문과 else if문으로 적용. 코드 실행에서는 정상적으로 적용되나 채점하기에서 실패 확인
- 처음에 문제의 정확한 원인을 모르고 문법이 잘못된 건가 싶어서 삼항연산자로도 수정해보고 최대한 축약할 수 있는 방법으로 적용
- 직각을 추가 후 문제가 해결되지 않자 다시 처음 작성한 코드를 확인.
- 문제 설명에서 예각은
0 < angle < 90
로 되어있었는데, 왜 91로 작성했는지 의문.. 수정 후 채점하니 성공
결과 반환
-
angel
에 70을 대입할 경우if(angle > 0 && angle < 90)
으로 1을 반환 -
angel
에 91을 대입할 경우else if(angle > 90 && angle < 180)
으로 3을 반환 -
angel
에 180을 대입할 경우else if(angle === 180)
으로 4를 반환
실행
-
console.log(solution(70));
을 호출하면, 1 반환 -
console.log(solution(90));
을 호출하면, 3 반환 -
console.log(solution(180));
을 호출하면, 4 반환
다른 사람의 풀이 참고
if
문과 삼항 연산자
로 문제를 풀었는데, filter
함수를 사용한 문제 풀이 과정에 가장 많은 댓글이 있었다.
switch
문으로도 해결한 방법이 있어, 다양하게 접근할 수 있는 방법을 알 수 있어서 좋았다.
// [10명] filter 함수를 사용한 풀이 과정
function solution(angle) {
return [0, 90, 91, 180].filter(x => angle>=x).length;
}
// [3명] switch문을 사용한 풀이 과정
function solution(angle) {
switch(angle) {
case 90: return 2;
case 180: return 4;
default:
return angle > 0 && angle < 90 ? 1 : 3;
}
}
링크
- 문제 링크: 문제 링크
- Git: rarrit github
출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges