본문 바로가기
백준

[백준] 2530번 : 인공지능 시계 – JAVA [자바]

by Hongwoo 2022. 9. 7.
반응형

https://www.acmicpc.net/problem/2530

 

2530번: 인공지능 시계

첫째 줄에 종료되는 시각의 시, 분, 초을 공백을 사이에 두고 출력한다. (단, 시는 0부터 23까지의 정수이며, 분, 초는 0부터 59까지의 정수이다. 디지털 시계는 23시 59분 59초에서 1초가 지나면 0시 0

www.acmicpc.net

 


  • 문제

 

 


  • 문제 풀이

백준 2530번 인공지능 시계는 브론즈 4 난이도의 수학 문제이다. 이 문제에서는 현재 시각이 A시 B분 C초의 형태로 주어진다. 그리고 요리하는 데 필요한 시간 D가 초 단위로 주어진다. 이때, 요리가 끝났을 때의 시간을 구하면 된다. 단, 23시 59분 59초에서 1초가 지나면 0시 0분 0초가 된다.

 

이 문제는 나눗셈과 나머지를 이용해서 간단하게 풀 수 있다.

 

우선 요리하는 데 필요한 시간 D초를 C에 더한다. 그러면 C + D초가 된다. 이 값이 60초 이상이 되면 B에 그만큼 더해줘야 한다. 예를 들어서, 75초가 되면 1분을 B에 더해줘야 한다는 것이다. 즉, C = (C + D) % 60이 되고 B = B + (C + D)/60이 된다는 것이다.

 

B분에서 A시로 넘어갈 때도 마찬가지이다. B분이 60분을 넘어가면 그만큼의 시를 A에 더해줘야 한다. 따라서, A = A + (B / 60)이 되고 B = B % 60이 된다. B나 C가 60 미만일 때는 60으로 나눠도 0이기 때문에 걱정할 필요는 없다.

 

자세한 코드는 아래에 있는 코드를 참고하면 되겠다.

 


  • 코드

 

import java.io.*;
import java.util.*;

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine());
        // A, B, C, D 입력 받기
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        int c = Integer.parseInt(st.nextToken());
        int d = Integer.parseInt(br.readLine());
        c += d;  
        b += (c/60);
        c = c % 60;
        a += (b/60);
        b = b % 60;
        a = a % 24;  //24시가 넘어가면 0시가 되야하므로 24로 나눈 나머지 구하기
        System.out.print(a + " " + b + " " + c);  //종료되는 시간 출력
    }
}

 

 

반응형

댓글