-
[백준/BOJ] 2765번 : 자전거 속도 (JAVA / 자바)백준 2022. 2. 1. 17:59
안녕하세요~ 코딩하는 코알못 코메인입니다.
https://www.acmicpc.net/problem/2765
2765번: 자전거 속도
입력은 여러 줄의 데이터로 구성된다. 각 데이터는 지름, 회전수, 시간이 공백으로 구분되어 주어진다. 지름은 inch단위의 실수이며, 회전수는 정수이다. 시간은 초단위의 실수로 주어진다. 입력
www.acmicpc.net
- 문제 -
난이도 브론즈 3 문제이다.
자바에서 입력방식은 scanner와 bufferedreader가 있다.
자바를 초반에 접하면 처음에 배우는 입력은 scanner이다. scanner가 bufferedreader보다 편하지만 속도가 느리다.
bufferedreader는 무조건 문자열로 받아오기때문에 정수형이나 실수형 변수에 저장하기 위해서는 입력과 형변환을 해줘야한다.
더 자세한 내용은 아래 글 참고 하면 좋다.
(JAVA / 자바) Scanner 와 Bufferedreader
안녕하세요~ 코딩하는 코알못 코메인입니다. 이번엔 백준 문제 풀면서 계속 언급될 scanner와 bufferedreader에 대한 간단한 정리를 해볼거다. 자바에서 입력은 scanner와 bufferedreader가 있다. 우선 각자
comain.tistory.com
풀이 방법
주어진 식대로 풀면 된다. 파이 값을 알려줬으니 파이값과 입력받은 지름을 곱하면 둘레가 된다. 둘레와 회전 횟수를 곱하면 충 이동 거리가 된다. 하지만 이 이동 거리는 인치이고 출력은 마일값으로 출력해야한다. 그렇기때문에 힌트에 나와있는 값을 보고 /12을 하고 /5280을 하면된다. 그럼 이 값이 distance가 되는 것이다.
다음 MPH는 distance에다 걸린 시간을 나눠주면 되는데, 이 입력되는 기준이 초기준이다. 그렇지만 구해야하는건 per hour다 시간으로 바꿔야하는 것이다. 그렇기에 입력된 시간에 / 3600을 해주면 된다. 그리고 나온 값을 distance에 나너준다. 이 식들만 잘 이해하면 어렵진 않다. 코드로 보자.
-풀이-
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 i = 1; //테스트 케이스 수가 정해져있지 않기 때문에 무한루프 사용 while(true) { StringTokenizer st = new StringTokenizer(br.readLine()); //지름, 회전수, 초 순서로 변수 선언 double A = Double.parseDouble(st.nextToken()); double B = Double.parseDouble(st.nextToken()); double C = Double.parseDouble(st.nextToken()); //회전수가 0이 오면 반복문 종료한다. if(B == 0) { break; } //연산할때 사용할 초를 시간으로 바꿔준다. 3600을 나눠도 되고, 60으로 두번 나눠도 된다. C = (C / 60) / 60; //이동 거리를 밀리거리로 바꾸는 공식 double distance = ((((A * 3.1415927) * B) / 12) / 5280); //MPH를 구하는 공식 double MPH = (distance / C); //print를 한줄만에 끝내도 되고 필자처럼 길어질거같아 여러개로 나눠서 출력문을 작성해도 된다. System.out.print("Trip #" + i + ": "); System.out.print(String.format("%.2f", distance) + " "); System.out.print(String.format("%.2f", MPH)); //출력이 끝나고 다음 케이스 입력시에 줄바뀜을 준다. System.out.println(); //반복이 넘어갈때마다 케이스 수에 1을 더한다. i++; } } }
-결과-
아직 코딩 공부가 부족한 필자라 설명과 풀이 방법이 많이 미흡할 수 있다. 코딩 고수들은 보시고 문제점이 있다면 댓글로 말해주시면 감사한 마음으로 참고 수정 하겠다.
'백준' 카테고리의 다른 글
[백준/BOJ] 2721번 : 삼각수의 합 (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2783번 : 삼각 김밥 (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2754번 : 학점계산 (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2747번 : 피보나치 수 (JAVA / 자바) (0) 2022.02.01 [백준/BOJ] 2742번 : 기찍 N (JAVA / 자바) (0) 2022.02.01