-
[백준/BOJ] 9493번 : 길면 기차, 기차는 빨라, 빠른 것은 비행기 (JAVA / 자바)백준 2022. 2. 10. 22:37
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/9493
- 문제 -
난이도 브론즈 3 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
풀이 방법
세 수를 입력하고 결과값을 구하는 과정에 나눠서 반올림을 해야하는 과정이 있기 때문에 세 수는 실수형으로 한다.
보통 시간을 구하는 방법은 제시된 값을 초로 바꿔서 계산한 다음에 시 분 초로 다시 구분해 주는 것이다.
물체가 해당 거리만큼 가기 위해 걸리는 시간을 구하는 방법은 거리 / 속도이다.
세 값이 M(거리) A(A 속도) B(B 속도)로 입력이 되고, A보다 B가 크다.
그럼 여기서 A가 걸리는 시간은 M / A. B가 걸리는 시간은 M / B가 된다.
그럼 두 값의 시간 차이는 큰 수에서 작은 수를 구하면 되는데, 당연하게도 작은수로 나눈 것이 클 것이다.
그렇다면 (M / A) - (M / B)가 될 것이고, 이 값을 초로 바꿔줘야 하니 * 3600을 해준다.
그리고 출력에보면 초는 반올림하라고 했으니, 위에 나온 값을 반올림해준다.
이제 나온 값을 시 분 초로 나눠주면 된다. 나온 값을 result라 하겠다.
시 : result / 3600
분 : (result / 60) % 60
초 : result % 60
분과 초는 2자리로 표시되고 0가 올 수 있다 했기때문에 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)); //무한루프 while(true) { StringTokenizer st = new StringTokenizer(br.readLine()); double M = Double.parseDouble(st.nextToken()); double A = Double.parseDouble(st.nextToken()); double B = Double.parseDouble(st.nextToken()); //0 0 0 입력시 무한루프 종료 if(M == 0 && A == 0 & B == 0) break; double result = Double.parseDouble(String.format("%.0f", (((M / A) - (M / B)) * 3600))); int h = (int) (result / 3600); int m = (int) ((result / 60) % 60); int s = (int) (result % 60); //기존 print가 아닌 format 사용. System.out.format("%d:%02d:%02d\n", h, m, s); } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수분들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠습니다.
'백준' 카테고리의 다른 글
[백준/BOJ] 10824번 : 네 수 (JAVA / 자바) (0) 2022.02.10 [백준/BOJ] 10818번 : 최소, 최대 (JAVA / 자바) (0) 2022.02.10 [백준/BOJ] 10817번 : 세 수 (JAVA / 자바) (0) 2022.02.09 [백준/BOJ] 10599번 : 페르시아의 왕들 (JAVA / 자바) (0) 2022.02.09 [백준/BOJ] 10569번 : 다면체 (JAVA / 자바) (0) 2022.02.09