-
[백준/BOJ] 1408번 : 24 (JAVA / 자바)백준 2022. 2. 22. 15:55
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/1408
- 문제 -
난이도 브론즈 3 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
입력받는 두 시간은 순서대로 현재시간, 임무시작 시간 이다.
두 시간을 전부 초로 바꿔 연산 후 다시 시 분 초로 나눠줄 것이다.
연산에는 두가지 경우로 나눠 연산한다.
1. 초로 바꾼 두 시간중 임무시작시간이 더 큰 경우
2. 현재시간이 더 큰 경우
1번일 경우 임무시작 시간이 더 크면 그냥 빼주면 된다. 13시에 임무를 시작했는데 지금이 11시면 2시간만 지나면 임무 시작시간 후 24시간이 되는 시간이기 때문에 임무시작시간 - 현재시간을 해주자.
2번일 경우 현재시간이 더 크면 현재시간에서 임무시작시간을 빼주고, 그 값을 24시간에서 빼준다. 13시에 임무를 시작했는데 현재시간이 14시면 아직 23시간이 남은 것이다. 24 - (14 - 13)을 해준거랑 같은것이다.
그렇기에 24시간을 초로바꾼 (24*3600) - (현재시간 - 임무시작시간) 을 해주자.
출력값은 00:00:00으로 해달라했으니 format으로 형태를 잡아주고 출력하자.
코드로 보자.
-풀이-
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)); //현재시간과 시작시간을 저장 할 변수 int now = 0; int start = 0; StringTokenizer st = new StringTokenizer(br.readLine(), ":"); int h = Integer.parseInt(st.nextToken()); int m = Integer.parseInt(st.nextToken()); int s = Integer.parseInt(st.nextToken()); now = (h * 3600) + (m * 60) + s; st = new StringTokenizer(br.readLine(), ":"); h = Integer.parseInt(st.nextToken()); m = Integer.parseInt(st.nextToken()); s = Integer.parseInt(st.nextToken()); start = (h * 3600) + (m * 60) + s; //앞으로 남은 시간을 저장 할 변수 int time = 0; if(start > now) { time = start - now; }else { time = (24 * 3600) - (now - start); } System.out.format("%02d:%02d:%02d", (time / 3600), ((time / 60) % 60), (time % 60)); } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 1312번 : 소수 (JAVA / 자바) (0) 2022.02.22 [백준/BOJ] 1526번 : 가장 큰 금민수 (JAVA / 자바) (0) 2022.02.22 [백준/BOJ] 1392번 : 노래 악보 (JAVA / 자바) (0) 2022.02.22 [백준/BOJ] 1003번 : 피보나치 함수 (JAVA / 자바) (0) 2022.02.22 [백준/BOJ] 1021번 : 회전하는 큐 (JAVA / 자바) (0) 2022.02.21