-
[백준] 2530번 : 인공지능 시계 [JAVA]Algorithm/백준[JAVA] 2024. 5. 5. 18:05
https://www.acmicpc.net/problem/2530
# 문제
# 접근방식
- 시, 분, 초의 범위 확인
- 시, 분, 초의 범위를 넘어가면 /와 %연산으로 넘어가지 않도록
# 소스코드
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)); StringTokenizer st; st = new StringTokenizer(br.readLine()); int hour = Integer.parseInt(st.nextToken()); int minute = Integer.parseInt(st.nextToken()); int second = Integer.parseInt(st.nextToken()); int cookTime = Integer.parseInt(br.readLine()); // 1분은 60초이기 때문에 cookTime/60해서 합산 // cookTime에서 분을 뺀 나머지를 초에 합산 minute += cookTime/60; second += cookTime%60; // second의 범위가 60이기 때문에 60이 아래로 정리. second는 second/60으로 minute에 넘겨줌 minute += second/60; second %= 60; // minute의 범위가 60이기 때문에 60 아래로 정리 hour += minute/60; minute %= 60; //hour의 범위는 24이므로 24아래로 정리 hour %= 24; System.out.println(hour + " " + minute + " " + second); } }
# 성능
# 회고
처음 코드를 아래처럼 짰는데 다시 생각해보니 순서도 뒤죽박죽이고 범위를 벗어나지 않게 하는 건 if문이 아니라 /와 %를 사용해야한다.
hour += cookTime / 3600; cookTime = cookTime % 3600; minute += cookTime / 60; second += cookTime % 60; if(second >= 60){ second -= 60; minute += 1; } if(minute >= 60){ minute -= 60; hour +=1; } if(hour >= 24){ hour -= 24; }
'Algorithm > 백준[JAVA]' 카테고리의 다른 글
[백준] 1247번 : 부호 [JAVA] (0) 2024.05.05 [백준] 1085번 : 직사각형에서 탈출 [JAVA] (0) 2024.05.05 [백준] 2083번 : 럭비 클럽 [JAVA] (0) 2024.05.05 [백준] 1264번 : 모음의 개수[JAVA] (0) 2024.05.04 [백준] 2753번 : 윤년[JAVA] (0) 2023.02.12