
내가 생각했을때 문제에서 원하는부분
첫째 줄에 테스트 케이스의 개수 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();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.