백준 자전거 속도

KIMYEONGJUN·2024년 11월 19일
post-thumbnail

문제

내가 생각했을때 문제에서 원하는부분

입력은 여러 줄의 데이터로 구성된다.
각 데이터는 지름,
회전수,
시간이 공백으로 구분되어 주어진다.
지름은 inch단위의 실수이며,
회전수는 정수이다.
시간은 초단위의 실수로 주어진다.
입력은 회전수가 0이면 끝난다.
실수는 소수점 셋째자리이하까지 주어진다.

각각의 데이터에 대해 다음을 출력한다
Trip #N: distance MPH
N은 각각의 데이터 번호를 출력해야 하며,
distance는 총 거리(Miles)를 소수 둘째 자리까지 반올림하여 나타내며,
MPH는 평균 속도(miles per hour)를 소수 둘째 자리까지 반올림하여 나타낸다.
회전수가 0인 데이터에 대해서는 출력하지 않는다.

내가 이 문제를 보고 생각해본 부분

BufferedReader와 StringTokenizer를 사용하여 입력을 읽어온다.
변수 선언:
A: 자전거 바퀴의 지름 (인치)
B: 바퀴의 회전수
C: 걸린 시간 (초)
종료 조건: 회전수 B가 0이면 입력을 종료한다.
시간 변환: 걸린 시간을 초에서 시간으로 변환한다.
거리 계산:
바퀴의 원주를 계산하고, 회전수에 곱하여 이동 거리를 피트로 구한 후, 마일로 변환한다.
속도 계산: 이동 거리와 걸린 시간을 이용해 평균 속도를 계산한다.
결과 출력: 각 케이스에 대해 여행 번호, 이동 거리, 평균 속도를 포맷에 맞춰 출력한다.

코드로 구현

package baekjoon.baekjoon_24;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;

// 백준 2765번 문제
public class Main842 {
    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()); // 초 순서로 변수 선언

            if(B == 0) {
                break; // 회전수가 0이면 종료
            }

            C = (C / 60) / 60; // 연산할때 사용할 초를 시간으로 바꿔준다. 3600을 나눠도 되고, 60으로 두번 나눠도 된다.
            double distance = ((((A * 3.1415927) * B) / 12) / 5280); // 이동 거리를 밀리거리로 바꾸는 공식
            double MPH = (distance / C); // MPH를 구하는 공식

            // 결과 출력
            System.out.printf("Trip #%d: %.2f %.2f%n", i, distance, MPH);
            i++; // 반복이 넘어갈때마다 케이스 수에 1을 더한다.
        }
        br.close();
    }
}

마무리

코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.

profile
Junior backend developer

0개의 댓글