[프로그래머스] PCCE 기출문제 7번 / 가습기 – JAVA


프로그래머스 “PCCE 기출문제 7번 / 가습기” 문제 해결과정입니다.

PCCE 기출문제 7번 / 가습기

문제설명

상우가 사용하는 가습기에는 “auto”, “target”, “minimum”의 세 가지 모드가 있습니다. 가습기의 가습량은 0~5단계로 구분되며 각 모드 별 동작 방식은 다음과 같습니다.

  • “auto” 모드
    • 습도가 0 이상 10 미만인 경우 : 5단계
    • 습도가 10 이상 20 미만인 경우 : 4단계
    • 습도가 20 이상 30 미만인 경우 : 3단계
    • 습도가 30 이상 40 미만인 경우 : 2단계
    • 습도가 40 이상 50 미만인 경우 : 1단계
    • 습도가 50 이상인 경우 : 0단계
  • “target” 모드
    • 습도가 설정값 미만일 경우 : 3단계
    • 습도가 설정값 이상일 경우 : 1단계
  • “minimum”모드
    • 습도가 설정값 미만일 경우 : 1단계
    • 습도가 설정값 이상일 경우 : 0단계

습도가 설정값 미만일 경우 : 1단계
습도가 설정값 이상일 경우 : 0단계
상우가 설정한 가습기의 모드를 나타낸 문자열 mode_type, 현재 공기 중 습도를 나타낸 정수 humidity, 설정값을 나타낸 정수 val_set이 주어질 때 현재 가습기가 몇 단계로 작동 중인지 return하도록 빈칸을 채워 solution 함수를 완성해 주세요.

제한사항

  • mode_type은 “auto”, “target”, “minimum” 세 가지 중 하나의 값을 갖습니다.
  • 0 ≤ humidity, val_set ≤ 100

입출력 예

mode_typehumidityval_setresult
“auto”23453
“target”41401
“minimum”10341
— : 공백

입출력 예 설명

입출력 예 #1

  • “auto”모드이므로 습도에 따라 가습량이 조절됩니다. 현재 습도가 20 이상 30 미만이므로 3을 return합니다.

입출력 예 #2

  • “target”모드이고, 설정값보다 습도가 높으므로 1을 return합니다.

입출력 예 #3

  • “minimum”모드이고, 설정값보다 습도가 낮으므로 1을 return합니다.

  • cpp를 응시하는 경우 리스트는 배열과 동일한 의미이니 풀이에 참고해주세요.
    • ex) 번호가 담긴 정수 리스트 numbers가 주어집니다. => 번호가 담긴 정수 배열 numbers가 주어집니다.

  • java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.
    • ex) solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요. => solution 메소드가 올바르게 작동하도록 한 줄을 수정해 주세요.

문제 해결과정

프로그래머스 코드

class Solution {
    public int func1(int humidity, int val_set){
        if(humidity < val_set)
            return 3;
        return 1;
    }

    public int func2(int humidity){
        if(humidity >= 50)
            return 0;
        else if (humidity >= 40)
            return 1;
        else if (humidity >= 30)
            return 2;
        else if (humidity >= 20)
            return 3;
        else if (humidity >= 10)
            return 4;
        else
            return 5;
    }

    public int func3(int humidity, int val_set){
        if(humidity < val_set)
            return 1;
        return 0;
    }

    public int solution(String mode_type, int humidity, int val_set) {
        int answer = 0;

        if(mode_type.equals("auto")){
            answer = func2(humidity);
        }
        else if(mode_type.equals("target")){
            answer = func1(humidity, val_set);
        }
        else if(mode_type.equals("minimum")){
            answer = func3(humidity, val_set);
        }

        return answer;
    }
}

주어진 코드를 보면 func1, func2, func3으로 모드가 나뉘는 것을 볼 수 있다. func2에서 return 값이 6개 있는 것을 보아 “auto” 인 것을 알 수 있다. 따라서 func2의 빈칸 값은 “0”. 이후에 func1과 func3에 각각 return 1; 이 있는데 입출력 예에서 humidity가 val_set보다 클 때 결과가 1이 나오며 target인 것을 봤을 때 func1이 target인 것을 알 수 있고, 따라서 func2는 minimum, 나머지 하나는 남은 것임을 알 수 있다.

21 라인 에러

21라인에서 에러가 발생할 수 있는데 이는 만약 func2에서 else if (humidity >= 0)으로 작성했을 때 음수값이 들어오면 예외 처리를 할 수 없어 오류가 발생한다(ex 음수). 이때 else if (humidity >= 0) 대신 else를 사용하면 예외 처리를 할 수 있다.


댓글 남기기

광고 차단 알림

광고 클릭 제한을 초과하여 광고가 차단되었습니다.

단시간에 반복적인 광고 클릭은 시스템에 의해 감지되며, IP가 수집되어 사이트 관리자가 확인 가능합니다.