
내가 생각했을때 문제에서 원하는부분
첫째 줄에 세븐25의 삼각 김밥 가격 정보 X와 Y가 주어진다. (Y그램 당 X원) (1 ≤ X ≤ 100, 1 ≤ Y ≤ 1,000)
둘째 줄에는 세븐25를 제외한 편의점의 개수 N이 주어진다. (1 ≤ N ≤ 100)
다음 N개의 줄에는 i번째 편의점의 삼각 김밥 가격 정보 Xi와 Yi가 주어진다. (Yi그램 당 Xi원) (1 ≤ Xi ≤ 100, 1 ≤ Yi ≤ 1,000)
첫째 줄에 삼각 김밥 1,000그램 가격의 최저가를 출력한다.
정답과의 오차는 0.01까지 허용한다.
내가 이 문제를 보고 생각해본 부분
BufferedReader와 StringTokenizer를 사용하여 입력을 받는다.
첫 줄에서 세븐25의 가격 X와 Y를 읽어 double 타입으로 변환한다.
세븐25의 1,000그램 당 가격을 계산하여 minPricePer1000g 변수에 저장한다.
이 값이 초기 최저가가 된다.
두 번째 줄에서 다른 편의점의 개수 N을 읽는다.
N번 반복하면서 각 편의점의 가격 Xi와 Yi를 읽는다.
각 편의점의 1,000그램 당 가격을 계산한다.
계산된 가격이 현재 minPricePer1000g보다 작으면 minPricePer1000g를 갱신해준다.
모든 편의점을 확인한 후, 최종 minPricePer1000g 값을 printf를 사용하여 소수점 둘째 자리까지 출력한다.
BufferedReader를 닫아 자원을 해제한다.
코드로 구현
package baekjoon.baekjoon_28;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
// 백준 2783번 문제
public class Main1026 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st;
// 세븐25 삼각 김밥 가격 정보 읽기
st = new StringTokenizer(br.readLine());
double seven25X = Double.parseDouble(st.nextToken());
double seven25Y = Double.parseDouble(st.nextToken());
// 세븐25 1000그램 당 가격 계산
double minPricePer1000g = (seven25X / seven25Y) * 1000;
// 다른 편의점 개수 읽기
int N = Integer.parseInt(br.readLine());
// 다른 편의점 가격 정보 읽고 최저가 갱신
for(int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
double otherX = Double.parseDouble(st.nextToken());
double otherY = Double.parseDouble(st.nextToken());
// 현재 편의점의 1000그램 당 가격 계산
double currentPricePer1000g = (otherX / otherY) * 1000;
// 최저가 갱신
if(currentPricePer1000g < minPricePer1000g) {
minPricePer1000g = currentPricePer1000g;
}
}
// 결과 출력 (소수점 둘째 자리까지)
System.out.printf("%.2f\n", minPricePer1000g);
br.close();
}
}
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.