코드업 (리모컨_JAVA)

김승연·2021년 3월 1일
0

알고리즘스터디

목록 보기
7/11


문제설명

거스름돈 문제처럼 생각하고 풀이했으나 오답.
포인트는 최소 버튼을 누르는것으로 마이너스 버튼이 있다는것도 생각해야함.
온도는 0도에서 40도 사이이고, 높은 온도에서 낮은온도로 변경하는 경우도 있다.

문제 풀이 방법

절대값을 구하면 될것으로 생각하고 온도차만큼 절대값을 계속 씌우면서 10,5,1 단위로 빼줬는데.. 그렇게 하면 .. 예를 들어 온도차가 9일 경우+10,-1도가 최소인데.. 이런경우를 찾지 못함.

import java.util.Scanner;

public class Main {

 static int temp(int start, int finish){
	    int num = 0; // 반복 횟수
	    int need = finish - start; // 필요한 온도
	    
	    if(need < 0) need*= -1;
	    
	    while(true){
	        if(need >= 10){ // 필요한 온도가 10도 이상
	            need -= 10;
	            num++;
	        }else if(need >= 8){ // 필요한 온도가 8도 이상일 경우 10도를 더하고 1도를 빼는것이 최소횟수
	            need -= 10;
	            num++;
	        }else if(need >= 5){ // 필요한 온도가 5도 이상
	            need -= 5;
	            num++;
	        }else if(need >= 4){ // 필요한 온도가 4도 이상일 경우 5도를 더하고 1도를 빼는것이 최소횟수
	            need -= 5;
	            num++;
	        }else if(need > 0){ // 필요한 온도가 1~3일 경우
	            need -= 1;
	            num++;
	        }else if(need == 0){ 
	            break;
	        }else{ // 필요한 온도가 - 인 경우
	            need += 1;
	            num++;
	        }
	        
	    }

	        return num; // 횟수 반환
	    }
	    
	    public static void main (String[] args) {
	        Scanner sc = new Scanner(System.in);
	        
	        System.out.println(temp(sc.nextInt(),sc.nextInt()));
	    }
	}
profile
Doing nothing cause nothing to happen.

0개의 댓글