Algorithm/[프로그래머스] Java

[프로그래머스] Lv. 0 | [PCCE 기출문제] 7번 / 가습기

구구르밍 2023. 11. 28. 17:21

 


[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단계

상우가 설정한 가습기의 모드를 나타낸 문자열 mode_type,

현재 공기 중 습도를 나타낸 정수 humidity,

설정값을 나타낸 정수 val_set이 주어질 때 현재 가습기가 몇 단계로 작동 중인지 return하도록 빈칸을 채워 solution 함수를 완성해 주세요.

 

 


제한사항

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

 


입출력 예

mode_type  humidity  val_set  result
"auto" 23 45 3
"target" 41 40 1
"miinimum" 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 메소드 가 올바르게 작동하도록 한 줄을 수정해 주세요.

 

 

 

 


    코드


 

빈칸 채우기 문제

class Solution {
    public int func1(int humidity, int val_set){
        if(humidity < val_set)
            return;
        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;
;
    }

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

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

        if(mode_type.equals("auto")){
            answer = func;
        }
        else if(mode_type.equals("target")){
            answer = func;
        }
        else if(mode_type.equals("minimum")){
            answer = func;
        }

        return answer;
    }
}

 


풀이

class Solution {

// 가습기의 모드 문자열 mode_type
// 현재 공기 중 습도를 나타낸 정수 humidity
// 설정값을 나타낸 정수 val_set

    // "target" 모드
    public int func1(int humidity, int val_set){
        // 현재 습도가 설정값보다 낮은 경우
        if(humidity < val_set)
            return 3; // 3단계 가습을 반환
        // 그 외의 경우
        return 1; // 1단계 가습을 반환
    }

  // "auto" 모드
    public int func2(int humidity){
        // 현재 습도에 따라 가습기의 단계를 결정
        if(humidity >= 50)
            return 0; // 습도가 50 이상이면 0단계
        else if (humidity >= 40)
            return 1; // 습도가 40 이상 50 미만이면 1단계
        else if (humidity >= 30)
            return 2; // 습도가 30 이상 40 미만이면 2단계
        else if (humidity >= 20)
            return 3; // 습도가 20 이상 30 미만이면 3단계
        else if (humidity >= 10)
            return 4; // 습도가 10 이상 20 미만이면 4단계
        return 5; // 습도가 10 미만이면 5단계
    }
   
    // "minimum" 모드
    public int func3(int humidity, int val_set){
        // 현재 습도가 설정값보다 낮은 경우
        if(humidity < val_set)
            return 1; // 1단계 가습을 반환
        // 그 외의 경우
        return 0; // 0단계 가습을 반환
    }

    // 가습기의 모드, 현재 습도, 설정값에 따라 작동 단계를 결정
		// solution 메소드 : 가습기의 모드에 따라 적절한 함수(func1, func2, func3)를 호출 
    public int solution(String mode_type, int humidity, int val_set) {
        int answer = 0;

				// mode_type에 따라 적절한 함수 호출
				// mode_type이 "auto"라면, func2 함수 호출
				if(mode_type.equals("auto")){

				    // 현재 습도를 기반하여 작동 단계를 결정
				    answer = func2(humidity); 
				}

				 // mode_type이 "target"이라면, func1 함수 호출
				else if(mode_type.equals("target")){

				    // 현재 습도와 설정값을 비교하여 작동 단계를 결정
				    answer = func1(humidity, val_set); 
				}

				//  mode_type이 "minimum"이라면, func3 함수 호출
				else if(mode_type.equals("minimum")){
				    
				    // 현재 습도와 설정값을 비교하여 작동 단계를 결정
				    answer = func3(humidity, val_set);
}

        return answer; 
    }
}

 

 

 


 

https://school.programmers.co.kr/learn/courses/30/lessons/250127

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr