상근날드에서 가장 잘 팔리는 메뉴는 세트 메뉴이다. 주문할 때, 자신이 원하는 햄버거와 음료를 하나씩 골라, 세트로 구매하면, 가격의 합계에서 50원을 뺀 가격이 세트 메뉴의 가격이 된다.
햄버거는 총 3종류 상덕버거, 중덕버거, 하덕버거가 있고, 음료는 콜라와 사이다 두 종류가 있다.
햄버거와 음료의 가격이 주어졌을 때, 가장 싼 세트 메뉴의 가격을 출력하는 프로그램을 작성하시오.
입력은 총 다섯 줄이다. 첫째 줄에는 상덕버거, 둘째 줄에는 중덕버거, 셋째 줄에는 하덕버거의 가격이 주어진다. 넷째 줄에는 콜라의 가격, 다섯째 줄에는 사이다의 가격이 주어진다. 모든 가격은 100원 이상, 2000원 이하이다.
첫째 줄에 가장 싼 세트 메뉴의 가격을 출력한다.
import java.util.*;
public class baek_5543 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int[] burger = new int[3]; // 햄버거 가격을 저장할 배열 생성
int[] drink = new int[2]; // 음료수 가격을 저장할 배열 생성
// 가장 저렴한 햄버거, 음료수를 저장할 변수에 Integer에 가장 큰 값을 지정
int bm =Integer.MAX_VALUE, dm = Integer.MAX_VALUE;
for (int i=0; i<3; i++) { // 반복문
burger[i] = sc.nextInt(); // 햄버거 가격 입력받기
if(bm > burger[i]) { // buger가 bm보다 작으면
bm = burger[i]; // bm은 buger가 됨.
}
}
for(int i=0; i<2; i++) { // 반복문
drink[i] = sc.nextInt(); // 음료수 가격 입력받기
if(dm > drink[i]) // drink가 dm보다 작으면
dm = drink[i]; // dm은 drink가 됨.
}
System.out.println(bm + dm - 50); // 세트 가격 출력
sc.close();
}
}
바로 알고리즘이 그려지던 문제라 쉽게 풀 수 있었습니다. 그래서 이번 문제 목표는 짧게 작성하는 것이었습니다.
반복문을 햄버거, 음료수에 하나씩만 쓰고 싶어서 구현을 하다 보니 최솟값을 비교하는데 오류가 났습니다.
오류를 해결하기 위해 bm과 dm에 Integer가 가지는 최댓값을 넣어주고 이를 비교해 최솟값을 구할 수 있게 되었습니다.