
✅ 문제
훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때,
오븐구이가 끝나는 시각을 계산하는 프로그램 만들기
📥 입력
첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.
📥 출력
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
💡 풀이
시계 돌리기 문제. 현재 시간에 오븐구이 만드는데 필요한 시간을 더해서 시/분 단위로 출력하면 된다. 앞서 풀어본 알람 시계 문제에서는 주어진 시간에서 45분을 뺐는데, 이 문제에서는 시간을 더해주기만 하는 간단한 문제이다. 출력값은 당연히 숫자니까 int 정수형이 된다.
주어진 시간과 분을 a시 b분이라고 가정했을 때 이 둘을 합쳐서 분으로 바꿔주기만 하면 된다.
여기에 오븐구이에 걸리는 시간 c분을 더해주면 아래와 같다.
min = a * 60 + b;
min = min + c;
그 결과값을 시와 분으로 환산해주면 된다.
결과값을 60으로 나눠서 몫은 시(h)가 되고 나머지는 분(m)이 된다.
min = a * 60 + b; // 입력받은 시와 분을 합쳐서 분으로 환산
min = min + c; // 구이요리를 하는데 걸리는 시간을 더해주기
h = min / 60;
m = min % 60;
이 때 주의할 점은 만약 계산하다가 시(h)가 24시가 넘을 경우는 어떻게 처리해 주어야 할지 고민을 해봐야 한다. 만약 23시 30분에 요리를 시작했는데 요리를 끝내는 데 걸리는 시간이 60분이라면? 출력해야 할 시간은 24시 30분이 된다.
하지만 문제에서 출력 시간으로 정해둔 범위는 0~23 사이의 값이다. 그러므로 시(h)가 24보다 큰 경우는 24로 나눈 나머지가 출력값이 되어야 한다.
h = (min / 60) % 24;
✅ 1. Scanner 를 이용한 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int min = 60 * a + b;
min += c;
int h = (min / 60) % 24;
int m = min % 60;
System.out.println(h + " " + m);
}
}
✅ 2. BufferedReader 를 이용한 풀이
package Baekjoon_test;
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 br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(br.readLine());
int min = 60 * a + b;
min += c;
int h = (min/60) % 24;
int m = min % 60;
System.out.println(h + " " + m);
}
}
'Algorithm > BaekJoon' 카테고리의 다른 글
[백준] 2739번 구구단 - 자바 / java (0) | 2024.04.11 |
---|---|
[백준] 2480번 주사위 세 개 - 자바/java (0) | 2024.04.08 |
[백준] 2884번 알람 시계 - 자바 / java (0) | 2024.04.04 |
[백준] 14681번 사분면 고르기 - 자바 / java (1) | 2024.04.04 |
[백준] 2753번 윤년 - 자바 / java (0) | 2024.04.04 |

✅ 문제
훈제오리구이를 시작하는 시각과 오븐구이를 하는 데 필요한 시간이 분단위로 주어졌을 때,
오븐구이가 끝나는 시각을 계산하는 프로그램 만들기
📥 입력
첫째 줄에는 현재 시각이 나온다. 현재 시각은 시 A (0 ≤ A ≤ 23) 와 분 B (0 ≤ B ≤ 59)가 정수로 빈칸을 사이에 두고 순서대로 주어진다. 두 번째 줄에는 요리하는 데 필요한 시간 C (0 ≤ C ≤ 1,000)가 분 단위로 주어진다.
📥 출력
첫째 줄에 종료되는 시각의 시와 분을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수, 분은 0부터 59까지의 정수이다. 디지털 시계는 23시 59분에서 1분이 지나면 0시 0분이 된다.)
💡 풀이
시계 돌리기 문제. 현재 시간에 오븐구이 만드는데 필요한 시간을 더해서 시/분 단위로 출력하면 된다. 앞서 풀어본 알람 시계 문제에서는 주어진 시간에서 45분을 뺐는데, 이 문제에서는 시간을 더해주기만 하는 간단한 문제이다. 출력값은 당연히 숫자니까 int 정수형이 된다.
주어진 시간과 분을 a시 b분이라고 가정했을 때 이 둘을 합쳐서 분으로 바꿔주기만 하면 된다.
여기에 오븐구이에 걸리는 시간 c분을 더해주면 아래와 같다.
min = a * 60 + b; min = min + c;
그 결과값을 시와 분으로 환산해주면 된다.
결과값을 60으로 나눠서 몫은 시(h)가 되고 나머지는 분(m)이 된다.
min = a * 60 + b; // 입력받은 시와 분을 합쳐서 분으로 환산 min = min + c; // 구이요리를 하는데 걸리는 시간을 더해주기 h = min / 60; m = min % 60;
이 때 주의할 점은 만약 계산하다가 시(h)가 24시가 넘을 경우는 어떻게 처리해 주어야 할지 고민을 해봐야 한다. 만약 23시 30분에 요리를 시작했는데 요리를 끝내는 데 걸리는 시간이 60분이라면? 출력해야 할 시간은 24시 30분이 된다.
하지만 문제에서 출력 시간으로 정해둔 범위는 0~23 사이의 값이다. 그러므로 시(h)가 24보다 큰 경우는 24로 나눈 나머지가 출력값이 되어야 한다.
h = (min / 60) % 24;
✅ 1. Scanner 를 이용한 풀이
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
int b = sc.nextInt();
int c = sc.nextInt();
int min = 60 * a + b;
min += c;
int h = (min / 60) % 24;
int m = min % 60;
System.out.println(h + " " + m);
}
}
✅ 2. BufferedReader 를 이용한 풀이
package Baekjoon_test;
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 br = new BufferedReader(new InputStreamReader(System.in));
String str = br.readLine();
StringTokenizer st = new StringTokenizer(str," ");
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());
int c = Integer.parseInt(br.readLine());
int min = 60 * a + b;
min += c;
int h = (min/60) % 24;
int m = min % 60;
System.out.println(h + " " + m);
}
}
'Algorithm > BaekJoon' 카테고리의 다른 글
[백준] 2739번 구구단 - 자바 / java (0) | 2024.04.11 |
---|---|
[백준] 2480번 주사위 세 개 - 자바/java (0) | 2024.04.08 |
[백준] 2884번 알람 시계 - 자바 / java (0) | 2024.04.04 |
[백준] 14681번 사분면 고르기 - 자바 / java (1) | 2024.04.04 |
[백준] 2753번 윤년 - 자바 / java (0) | 2024.04.04 |