Back-end/Algorithm

[프로그래머스][코딩테스트 입문] 각도기

Nellie Kim 2022. 11. 9. 11:24
728x90

문제 설명

각에서 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은 정수입니다.

 

문제

class Solution {
    public int solution(int angle) {
    
    
        return ;
    }
}

 

 

 

내 잘못된 풀이

class Solution {
    public int solution(int angle) {
        int ans = 0;
        if(0 < angle < 90){
            ans = 1;
        }else if(angle == 90){
            ans = 2;
        }else if(90 < angle < 180){
            ans = 3;
        }else{
            ans = 4;
        }
        return ans;
    }
}

 

정답

class Solution {
    public int solution(int angle) {
        int ans = 0;
        if(0 < angle && angle < 90){
            ans = 1;
        }else if(angle == 90){
            ans = 2;
        }else if(90 < angle && angle < 180){
            ans = 3;
        }else{
            ans = 4;
        }
        return ans;
    }
}

 

다른풀이1 (삼항연산자 사용)

class Solution {
    public int solution(int angle) {
        return angle == 180 ? 4 : angle < 90 ? 1 : angle == 90 ? 2 : angle > 90 ? 3 : 0;
    }
}

 

다른풀이2 (switch-case 사용)

class Solution {
    public int solution(int angle) {
        int answer = 0;
        String gak = null;
        if(0 < angle && angle < 90){
            gak = "예각";
        };
        if(angle == 90){
            gak = "직각";
        };
        if(90 < angle && angle < 180){
            gak = "둔각";
        };
        if(angle == 180){
            gak = "평각";
        };

        switch(gak){
            case "예각":
                answer = 1;
                break;
            case "직각":
                answer = 2;
                break;
            case "둔각":
                answer = 3;
                break;
            case "평각":
                answer = 4;
                break;
        }
        return answer;
    };
}

 

 

 

- 연산을 하나씩 시켜야 한다. 수학처럼 0 < a < 1 이런 식으로 하면 안된다!!!

- 변수(int ans = 0;) 는 항상 자동으로 생성해줄것... 변수를 리턴해야하니까!