728x90
문제에서 중요하게 봐야하는건
두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.
이 부분이다.
예제 1입력
14 30
20
예제 출력
14 50
이런식으로 나오는데
예제 입력의 두번째 줄의 값이 c의 값이다.
c의 값은 0~1000 이기 때문에
int c = Integer.parseInt(bf.readLine());
int quotient = c/60; // 입력값을 시간과
int remainder = c%60; // 분으로 나눴다.
c값을 60분 기준으로 시간, 분으로 나눠서 저장하고
if (quotient >= 1){ // 몫이 1을 넘을때 -> 입력값이 1시간 보다 클 때
h = h+quotient; // 기존 시간에 입력된 시간 더하기
m= m+remainder; // 기존 시간에 입력된 분 더하기
if (m >= 60) {
h++;
m=m-60;
}
if(h>=24){
h=h-24;
}
}
else { //입력 값이 1시간 보다 작을 때
m=m+c;
if (m>=60){
h++;
if(h>=24){
h=h-24;
}
m=m-60;
}
}
문제 풀이 단계
- 입력값의 범위 확인
- 입력값을
/
,%
을 사용해 시간과 분으로 분리하기. - 입력된 값이 60분 보다 큰지 여부
- 입력된 값의 분(min)을 더한 분(min)이 60분 보다 큰지 여부
전체 코드
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader bf = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(bf.readLine(), " ");
int h = Integer.parseInt(st.nextToken());
int m = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(bf.readLine());
int quotient = c/60;
int remainder = c%60;
if (quotient >= 1){
h = h+quotient;
m= m+remainder;
if (m >= 60) {
h++;
m=m-60;
}
if(h>=24){
h=h-24;
}
}
else {
m=m+c;
if (m>=60){
h++;
if(h>=24){
h=h-24;
}
m=m-60;
}
}
System.out.println(h+" "+m);
}
}
728x90
'알고리즘 풀이 > 백준' 카테고리의 다른 글
Java - [백준] 3052번 나머지 (0) | 2022.09.09 |
---|---|
Java - [백준] 11021 A+B -7 (0) | 2022.09.02 |
Java - [백준] 8393번 합 (0) | 2022.08.26 |
java [백준]2884번 알람 시계 (0) | 2022.08.19 |
JAVA - [백준] 2588번 곱셈 (0) | 2022.07.15 |
댓글