본문 바로가기
코딩 테스트/[JAVA] 백준

[JAVA] 백준 2783번 삼각 김밥 | BOJ 자바 bronze 3

by M개발자 2022. 3. 18.
반응형

삼각 김밥

유명 편의점 체인점 세븐25는 삼각 김밥을 전국에서 가장 싸게 판매하고 있다.

이 회사의 직원들은 삼각 김밥의 가격을 전국 최저가를 유지하기 위해 매일 근처의 편의점을 방문한다. 그리고 나서 세븐25의 삼각 김밥보다 싼 가격을 발견하면, 삼각 김밥의 가격을 그 가격으로 바꿔 최저가를 유지한다.

매일 아침, 점심, 저녁으로 삼각 김밥을 먹는 상근이와 정인이는 정말 세븐25가 제일 싼지 궁금해졌다. 

이들은 학교 근처에 있는 세븐 25와 세븐 25를 제외한 서로 다른 N개의 편의점 체인을 방문 할 것이다. 이 편의점을 방문하면서 세븐25보다 싼 삼각김밥을 찾을 것이다. 또, 전체 편의점에서 가장 싼 삼각 김밥은 어디인지 찾을 것이다.

어느 편의점의 삼각 김밥이 제일 싼지 고객들이 쉽게 알지 못하기 하기 위해서, 모든 편의점은 삼각 김밥의 가격을 다음과 같이 표시한다. "삼각 김밥 Y그램 당 X원"

상근이와 정인이는 삼각 김밥을 1,000그램 살 것이다.

세븐 25의 삼각 김밥 가격과, 다른 N개 편의점의 삼각 김밥 가격이 주어졌을 때, 1,000그램의 삼각 김밥을 가장 싸게 사려면 얼마면 되는지 구하는 프로그램을 작성하시오.

삼각 김밥은 여러 군데에서 돌아가면서 사도 되고, 세븐 25와 N개 편의점 이외의 다른 곳에서는 살 수 없다.

 

세븐 25보다 저렴한 삼각 김밥의 1000g의 가격을 구하라


예제 입출력

 

입력 출력
5 100 // 세븐25의 삼각김밥 100g당 5원
3 // 타 편의점의 수
4 100 // 100g당 4원
3 100 // 100g당 3원
7 100 // 100g당 7원
30.00 // 1000g의 최소 가격
13 6
5
56 679
35 120
99 999
56 73
37 532
69.55
100 5
3
99 8
65 14
78 10
4642.86

 


코드

 

1. seven25의 x, y값 받기

int sevenX : X원

int sevenY : Yg

→ Yg 당 X원이다.

 

2. 최소 가격 기본값을 seven25로 설정하기

seven25의 가격과 비교하는 것이므로 기본값을 seven25의 1000g의 가격으로 한다. 후에 출력할 때 1000g의 가격으로 출력할 것이므로 현재는 5원 / 100g의 값을 구한다.

 

3. 타 편의점의 수만큼 for문 반복

 

4. 타 편의점의 x / y값과 min값 비교하기

타 편의점이 min보다 작을 경우 해당 편의점이 최소 가격이다. 따라서 Math.min 메소드를 사용하여 비교하고 min을 저장한다.

 

5. 최종 최소값을 1000g의 가격으로 출력하기

조건 정답과의 오차는 0.01까지 허용에 따라 Math.round 메소드를 사용하여 소수점 둘째자리에서 반올림을 한다. 

중요!! 1000g의 가격을 구하는 것이므로 round 메소드에서 1000을 곱해주어야 한다.

 

Math.round()

매개변수로 반올림할 값과 10의 반올림 자리의 제곱을 곱한 뒤, 또 그 값으로 나누면 반올림한 값이 나온다.

→ 소수점 둘째 자리 반올림할 경우 100을 곱하고 100을 다시 나눔

Math.round(33.339 * 100) / 100; // 33.34

import java.util.Scanner;

public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int sevenX = scanner.nextInt();
        int sevenY = scanner.nextInt();

        int n = scanner.nextInt();
        double min = (double) sevenX / sevenY;

        for (int i = 0; i < n; i++) {
            int conX = scanner.nextInt();
            int conY = scanner.nextInt();
            min = Math.min(min, (double) conX / conY);
        }
        System.out.println(Math.round(min * 1000 * 100) / 100.0);
    }
}

 

 

2783번: 삼각 김밥

첫째 줄에 세븐25의 삼각 김밥 가격 정보 X와 Y가 주어진다. (Y그램 당 X원) (1 ≤ X ≤ 100, 1 ≤ Y ≤ 1,000) 둘째 줄에는 세븐25를 제외한 편의점의 개수 N이 주어진다. (1 ≤ N ≤ 100) 다음 N개의 줄에는 i

www.acmicpc.net

 

반응형

댓글