본문 바로가기
Coding Test/Java Coding Test

[프로그래머스 / 자바] - PCCE 기출문제 7번 가습기

by nam_ji 2024. 9. 8.

PCCE 기출문제 7번 가습기 - LV.0

문제

  • 문자열 mode_type과 정수 humidity와 val_set이 매개변수로 주어집니다.
  • 상우가 사용하는 가습기에는 "auto", "target", "minimum"의 세 가지 모드가 있습니다.
  • 가습기의 가습량은 0~5단계로 구분되며 각 모드 별 동작 방식은 다음과 같습니다.
    • "auto" 모드 
      1. 습도가 0 이상 10 미만인 경우 : 5단계
      2. 습도가 10 이상 20 미만인 경우 : 4단계
      3. 습도가 20 이상 30 미만인 경우 : 3단계
      4. 습도가 30 이상 40 미만인 경우 : 2단계
      5. 습도가 40 이상 50 미만인 경우 : 1단계
      6. 50 이상인 경우 : 0단계
    • "target" 모드
      1. 습도가 설정값 미만일 경우 : 3단계
      2. 습도가 설정값 이상일 경우 : 1단계
    • "minimum"모드 
      1. 습도가 설정값 미만일 경우 : 1단계
      2. 습도가 설정값 이상일 경우 : 0단계
  •  상우가 설정한
  • 가습기의 모드를 나타낸 문자열 mode_type,
  • 현재 공기 중 습도를 나타낸 정수 humidity,
  • 설정값을 나타낸 정수 val_set이 주어질 때
  • 현재 가습기가 몇 단계로 작동 중인지 return하도록 빈칸을 채워 solution 함수를 완성해 주세요.


테스트 (인텔리제이)

  • 첫 번째 빈칸은 습도가 설정 값보다 이상일 경우 1을 반환합니다.
  • 그렇기 때문에 첫 번째 빈칸의 if문은 target을 의미하기 때문에 3을 넣어야 하고
  • 두 번째와 세 번째 빈칸은 다양한 조건이 있는걸로 봐서 auto인 것을 알 수 있고
  • if문과 else if문에서 이미 필요한 조건이 다 걸려 있기 때문에 else문을 넣으면 되고 return 5를 해주면 됩니다.
  • 네 번째 빈칸은 마지막 남은 minimum을 의미하기 때문에 0을 넣어주면 되고
  • 5,6,7 번째 빈칸들은 if문의 비교 값에 해당하는 func 번호와 파라미터 값을 넣어주면 됩니다.
package com.example.codingtest;

public class PCCE_기출문제_7번_가습기 {
    public static void main(String[] args) {
        /*
        문자열 mode_type과 정수 humidity와 val_set이 매개변수로 주어집니다.
        상우가 사용하는 가습기에는 "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단계
        상우가 설정한
        가습기의 모드를 나타낸 문자열 mode_type,
        현재 공기 중 습도를 나타낸 정수 humidity,
        설정값을 나타낸 정수 val_set이 주어질 때
        현재 가습기가 몇 단계로 작동 중인지 return하도록 빈칸을 채워 solution 함수를 완성해 주세요.

        입출력 예
        mode_type	humidity	val_set	    result
        "auto"	    23	        45          3
        "target"	41	        40	        1
        "minimum"	10	        34	        1

        입출력 설명
        #1
        "auto"모드이므로 습도에 따라 가습량이 조절됩니다.
        현재 습도가 20 이상 30 미만이므로 3을 return합니다.
        #2
        "target"모드이고, 설정값보다 습도가 높으므로 1을 return합니다.
        #3
        "minimum"모드이고, 설정값보다 습도가 낮으므로 1을 return합니다.

        cpp를 응시하는 경우 리스트는 배열과 동일한 의미이니 풀이에 참고해주세요.
        ex) 번호가 담긴 정수 리스트 numbers가 주어집니다.
        => 번호가 담긴 정수 배열 numbers가 주어집니다.
        java를 응시하는 경우 리스트는 배열, 함수는 메소드와 동일한 의미이니 풀이에 참고해주세요.
        ex) solution 함수가 올바르게 작동하도록 한 줄을 수정해 주세요.
        => solution 메소드가 올바르게 작동하도록 한 줄을 수정해 주세요.
         */
        String mode_type = "minimum";
        int humidity = 10;
        int val_set = 34;

        Solution solution = new Solution();
        int answer = solution.solution(mode_type, humidity, val_set);

        System.out.println(answer);
    }
}

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;
    }
}

프로그래머스 코드

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;
    }
}