[내배캠 TIL ] 9주차 수요일 :: switch 사용하기
프로그래머스 문제중 각도기 문제를 풀어봤다.
우선 문제를 보면은 이렇다.
각에서 0도 초과 90도 미만은 예각, 90도는 직각, 90도 초과 180도 미만은 둔각 180도는 평각으로 분류합니다. 각 angle 이 매개변수로 주어질 때 예각일 때 1, 직각일 때 2, 둔각일 때 3, 평각일 때 4를 return하도록 solution 함수를 완성해주세요.
여기서 보통 접근 할수있는 방식은 여러가지가 있지만 그 중에서도 if 문을 사용 할 수도 있고, 삼항연산자를 통해
해결 할수도 있을것이다. 이 방법들로는 해봤기에 다른 동료분이 추천해주신 switch문으로도 해결을 해봤다.
하지만 주어진 문제의 상황에서는 이것보다 좋은 방법이 많기에 연습겸 한거라고 생각을 하면 좋겠다.
우선 첫 번째,
function solution(angle) { } 이렇게 시작을 하는데 중괄호 { } 안에 switch 문을 사용하기 위해 작성을 한다.
그리고나서 원하는 조건 즉, case (조건) 을 만들어서 return 을 하게된다.
문제의 조건을 토대로 switch문으로 작성을 하게 되면 아래처럼 완성 할 수 있다.
function solution(angle) {
switch(true){
case(조건1) 90 > angle :
return 1
break;
case(조건2) angle === 90 :
return 2
break;
case(조건3) 90<angle && angle<180 :
return 3
break;
case (조건4) angle === 180 :
return 4
break;
}
}
이렇게 실행을 하게 되면 정상적으로 실행이 되는데, 이 코드를 작성하여 중간중간 생긴 오류들이 있었다.
이것을 해결하면서 또 다른 공부를 하게 되어 좋았다 ... 그 오류중 첫 번째로는, 매개변수쪽 문제였다.
문제에서 angle을 return하기에 내생각으로는 파라미터에 angle 라고 생각했는데 알아보니까 switch의 매개변수자리에
true가 들어가면서 안에 있는 case(조건)들이 참일때 라는 말이 되는 것이였다. 그래서 true를 사용해야 했고
두 번째로는, 조건 3번째쪽에서 문제였다.
처음에는 이렇게 작성을 하였는데 코드실행을 돌려보니 첫번째, 두번째 조건은 맞고 계속 세번째 조건에서만 오류가 발생했다. 그 이유는 조건3 을 보면 90 < angle < 180 이렇게 되어 있는데, 조건에 and(그리고)를 넣어줘야 했었다.
조건3 그대로 해석을 하면 90보다 크꼬 180보다 작다 인데 조건3과 조건4가 문제가 생기면서 오류가 났던것 같다.
그래서 여기에 연산자를 추가를 하면 성공적으로 되는데,
이렇게 && (and) 이렇게 사용해주면 정상적으로 실행이 되는것을 볼 수 있다.
평소에는 if문을 작성하면서
이런식으로 작성을 하며 ,
|| 또는(or)을 사용하며 익숙했는데 && (and) 연산자를 많이 사용해보지 않아 생각이 나지 않았던것 같다.
자주 문제를 풀면서 연산자등 배웠던것들을 마음대로 활용해보면서 기억을 해야할 것 같다.