문제/백준
[백준] 2530. 인공지능 시계 - JAVA
c-hano
2025. 5. 3. 16:09
https://www.acmicpc.net/problem/2530
조건.
- 시, 분, 초, 필요한 시간(초) 를 입력받는다.
- 입력받은 시, 분, 초에 필요한 시간(초)가 더해진 값을 출력한다.
- 시는 0~23 사이 분은 0~59 사이 초는 0~59 사이의 값이다.
풀이.
입력받은 초 단위를 시, 분, 초 단위로 바꾸어 반환하는 문제이다.
우선 시(a), 분(b), 초(c), 필요한 시간(d)를 입력 받는다.
Scanner sc = new Scanner(System.in);
int a, b, c, d;
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt();
d = sc.nextInt();
d를 시, 분, 초로 변환하여 입력받은 a, b, c에 합산하였다..
1시간은 3600초, 1분은 60초
d / 3600(초 -> 시) 로 몫을 구해 a에 더한 후 a에 다시 값을 두었다.
a = d / 3600 + a;
d의 몫은 사용했으니 d % 3600 으로 몫을 뺀 d값을 재설정한다.
d = d % 3600;
.
재설정한 d값에서 d / 60(초 -> 분) 으로 몫을 구해 b를 더하여 b에 값을 다시 두었다.
b = d / 60 + b;
또 남은 d의 값을 구해야하니 d % 60 으로 나머지(초)를 구한 후, c를 더해 c의 값을 다시 둔다.
d = d % 60;
c = c + d;
주어진 조건에서 a는 0~23 b는 0~59 c는 0~59라고 주어졌으므로 c가 60 이상일 경우 b에 1을 더한 후 c % 60으로 주어진 조건을 맞춘다. b가 60 이상일 경우 a에 1을 더한 후 b % 60으로 주어진 조건을 맞춘다.
if(c >= 60) {
c = c % 60;
b += 1;
}
if(b >= 60) {
b = b % 60;
a += 1;
}
if(a >= 24) {
a = a % 24;
}
정답.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a, b, c, d;
a = sc.nextInt();
b = sc.nextInt();
c = sc.nextInt();
d = sc.nextInt();
a = d / 3600 + a;
d = d % 3600;
b = d / 60 + b;
d = d % 60;
c = c + d;
if(c >= 60) {
c = c % 60;
b += 1;
}
if(b >= 60) {
b = b % 60;
a += 1;
}
if(a >= 24) {
a = a % 24;
}
System.out.print(a + " " + b + " " + c);
}
}
참고.
- 한번에 해결하려하지말고 차근차근 접근해보자