백준 삼각 김밥

KIMYEONGJUN·2025년 5월 19일
post-thumbnail

문제

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

첫째 줄에 세븐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();
    }
}

마무리

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

profile
Junior backend developer

0개의 댓글