본문 바로가기

알고리즘

[C/C++] 코드업(codeup) 3120번 리모컨

▽문제 바로가기

https://codeup.kr/problem.php?id=3120

 

리모컨

현재 온도a 와 목표 온도b가 입력된다. ( 0 <= a , b <= 40 )

codeup.kr


입력

현재 온도a 와 목표 온도b가 입력된다. ( 0 <= a , b <= 40 )

 

출력

최소한의 버튼 사용으로 목표온도가 되는 버튼의 횟수를 출력한다.

 

문제 풀이

 

1, 5, 10 단위로 작동하는 리모컨 기능이 있습니다. 절댓값을 구하여 간단하게 생각해봅시다.

 

입력의 최대는 40입니다. 계산해야 하는 값은 최대 십의 자리입니다. a-b의 절댓값에서 10으로 나눈 몫이 십의 자리를 맞추기 위한 +10 버튼 작동 횟수입니다.

 

다음은 일의 자리를 맞춰줍시다.

현재 0이라는 값을 가진다면 

 

1이 되기 위해서는 +1(1회)

2가 되기 위해서는 +1, +1(2회)

3이 되기 위해서는 +1, +1, +1 또는 +5, -1, -1(3회)

4가 되기 위해서는 +5, -1(2회)

5가 되기 위해서는 +5(1회)

6이 되기 위해서는 +5, +1(2회)

7이 되기 위해서는 +5, +1, +1(3회)

8이 되기 위해서는 +10, -1, -1(3회)

9가 되기 위해서는 +10, -1(2회)

 

입니다.

 

#include <stdio.h>
#include <iostream>

using namespace std;

int main(){
	
	int a=0, b=0;
	scanf("%d%d", &a, &b);
	
	int result = 0;
	result += abs(a-b)/10;
	
	int c = abs(a-b)%10;
	if(c==1||c==5) result+=1;
	else if(c==2||c==4||c==6||c==9) result+=2;
	else if(c==3||c==7||c==8) result+=3;
	
	printf("%d", result);
	
	return 0;
}