잇창명의 집에는 오래된 전자레인지가 있다. 백준 온라인 저지에서 문제를 너무 많이 푼 잇창명은 문득 이런 궁금증이 생기기 시작했다.
버튼을 최소 몇 번 눌러야 조리시간 2분을 맞출 수 있을까?
잇창명의 전자레인지에는 다음과 같이 버튼이 4개 있고, 각 버튼을 누르면 다음과 같이 작동한다. 초기 상태에는 조리시간이 0초이고, 조리 중이 아니며, 조리시작 버튼을 눌러야 조리가 시작된다.
예를 들어 이 전자레인지로 2분을 맞추려면 조리시작 버튼을 4번 누르면 되지만, 최적의 방법은 아니다. 그 대신 1분-1분-조리시작 순서로 버튼을 누르면 버튼을 누른 횟수가 3번이 되어 최적이다. 1분-1분의 경우에는 조리가 되지 않기 때문에 최적이 아니다. 실제로는 조리 중에는 남은 조리시간이 계속 줄어들고 중간에 조리를 취소할 수 있지만, 이 문제에서는 생각하지 않기로 한다.
잇창명은 지난 한 학기 동안 전자레인지를 이용할 때마다 매번 문제로 내고 싶은 마음이 들어서 괴로워하고 있다. 잇창명을 도와주자!
첫 줄에 잇창명이 원하는 조리시간이 M:S 형태로 주어진다(0 ≤ M ≤ 60, 0 ≤ S ≤ 59). M은 분, S는 초이며, 항상 두 자리 숫자로 주어진다.
조리시간은 10초 이상 60분(3600초) 이하이며, 항상 10의 배수이다.
주어진 조리시간을 맞추기 위해 버튼을 눌러야 하는 최소 횟수를 출력한다.
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(":");
int M = Integer.parseInt(str[0]);
int S = Integer.parseInt(str[1]);
int cnt = 1;
cnt += (M/10 + M%10); // 10분, 1분 단위로 있어서 나눠지면 10분단위, 아니면 1분 단위로 카운팅.
if (S < 30) {
cnt += S/10;
}
if (S >= 30) {
cnt += (S-30)/10;
}
System.out.println(cnt);
}
}
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] str = br.readLine().split(":");
int M = Integer.parseInt(str[0]);
int S = Integer.parseInt(str[1]);
S += M*60;
if (S == 0) {
System.out.println(0);
return ;
}
if (S < 30) {
System.out.println(S/10 + 1);
return ;
}
if (S < 60) {
System.out.println((S-30)/10 + 1);
return ;
}
int S2 = S;
int ss, sm=1;
S -= 30; ss = 1;
ss += S/600; S %= 600;
ss += S/60; S %= 60;
ss += S/30; S %= 30;
ss += S/10;
sm += S2/600; S2 %= 600;
sm += S2/60; S2 %= 60;
sm += S2/30; S2 %= 30;
sm += S2/10;
System.out.println(Math.min(ss, sm));
}
}