백준 미국 스타일

KIMYEONGJUN·2024년 11월 15일
post-thumbnail

문제

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

첫째 줄에 테스트 케이스의 개수 T(1<=T<=1,000)가 주어진다.
각 테스트 케이스는 한 줄로 이루어져 있다.
첫 번째 숫자는 값이고,
두 번째 등장하는 문자는 단위이다.
값은 소수일 수도 있고,
이 경우 소수점 아래 최대 넷째 자리까지 주어진다.
단위는 kg, lb, l, g 중 하나이며,
순서대로 킬로그램, 파운드, 리터, 갤런이다.

각 테스트 케이스에 대해서 바꾼 값과 단위를 출력한다.
값은 반올림해서 소수점 4째자리까지 출력한다.
단위는 kg, lb, l, g중 하나이며, 설명은 입력 설명에 있다.

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

BufferedReader를 사용하여 입력 받는다.
for 루프를 사용하여 각 테스트 케이스를 순차적으로 처리한다.
각 반복에서 한 줄의 입력을 읽고,
이를 공백으로 분리하여 값과 단위를 추출한다.
switch 문을 사용하여 입력된 단위에 따라 적절한 변환해준다.
그리고 각 케이스는 특정 단위에 대한 변환 공식을 적용한다.
예를 들어,
킬로그램을 파운드로 변환할 때는 value * 2.2046을 사용하고,
그 반대의 경우는 value * 0.4536을 사용한다.
변환된 값은 String.format 메소드를 사용하여 소수점 4자리까지 반올림하여 출력한다.
이는 문제에서 요구하는 출력 형식에 맞추기 위한 것으로,
변환된 값을 StringBuilder에 추가하여 최종적으로 한 번에 출력하는 방식이다.
모든 처리가 끝난 후,
System.out.print를 사용하여 결과를 한 번에 출력한다.

코드로 구현

package baekjoon.baekjoon_24;

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

// 백준 2712번 문제
public class Main838 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();

        int T = Integer.parseInt(br.readLine().trim()); // 테스트 케이스 수
        for(int i = 0; i < T; i++) {
            String line = br.readLine().trim();
            String[] parts = line.split(" ");
            double value = Double.parseDouble(parts[0]);
            String unit = parts[1];

            switch(unit) {
                case "kg":
                    // 킬로그램 -> 파운드
                    sb.append(String.format("%.4f lb\n", value * 2.2046));
                    break;
                case "lb":
                    // 파운드 -> 킬로그램
                    sb.append(String.format("%.4f kg\n", value * 0.4536));
                    break;
                case "l":
                    // 리터 -> 갤런
                    sb.append(String.format("%.4f g\n", value * 0.2642));
                    break;
                case "g":
                    // 갤런 -> 리터
                    sb.append(String.format("%.4f l\n", value * 3.7854));
                    break;
            }
        }

        System.out.print(sb.toString());
        br.close();
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글