[1차] 문제1) 음식전문점 운영 - JAVA - COS PRO 1급 기출문제 - Java (goorm.io)
※ 프로그램 빈 칸 채우기 문제
□ 문제설명
배달음식 전문점 운영을 위해 다음과 같이 DeliveryStore 인터페이스와 PizzaStore, Food 클래스를 작성했습니다.
* DeliveryStore :
* DeliveryStore는 배달 음식점의 인터페이스입니다.
* 배달 음식점은 set_order_list와 get_total_price 메소드를 구현해야 합니다.
* set_order_list 메소드는 주문 메뉴의 리스트를 매개변수로 받아 저장합니다.
* DeliveryStore는 배달 음식점의 인터페이스입니다.
* 배달 음식점은 set_order_list와 get_total_price 메소드를 구현해야 합니다.
* set_order_list 메소드는 주문 메뉴의 리스트를 매개변수로 받아 저장합니다.
* get_total_price 메소드는 주문받은 음식 가격의 총합을 return 합니다.
* Food :
* Food는 음식을 나타내는 클래스입니다.
* 음식은 이름(name)과 가격(price)으로 구성되어있습니다.
* Food는 음식을 나타내는 클래스입니다.
* 음식은 이름(name)과 가격(price)으로 구성되어있습니다.
* PizzaStore :
* PizzaStore는 피자 배달 전문점을 나타내는 클래스이며 DeliveryStore 인터페이스를 구현합니다.
* menu_list는 피자 배달 전문점에서 주문 할 수 있는 음식의 리스트를 저장합니다.
* order_list는 주문 받은 음식들의 이름을 저장합니다.
* set_order_list 메소드는 주문 메뉴를 받아 order_list에 저장합니다.
* PizzaStore는 피자 배달 전문점을 나타내는 클래스이며 DeliveryStore 인터페이스를 구현합니다.
* menu_list는 피자 배달 전문점에서 주문 할 수 있는 음식의 리스트를 저장합니다.
* order_list는 주문 받은 음식들의 이름을 저장합니다.
* set_order_list 메소드는 주문 메뉴를 받아 order_list에 저장합니다.
* get_total_price 메소드는 order_list에 들어있는 음식 가격의 총합을 return 합니다.
주문 메뉴가 들어있는 리스트 order_list가 매개변수로 주어질 때, 주문한 메뉴의 전체 가격을 return 하도록 solution 메소드를 작성하려고 합니다. 위의 클래스 구조를 참고하여 주어진 코드의 빈칸을 적절히 채워 전체 코드를 완성해주세요.
□ 매개변수 설명
주문 메뉴가 들어있는 리스트 order_list가 solution 메소드의 매개변수로 주어집니다.
- order_list의 길이는 1 이상 5이하입니댜.
- order_list에는 주문하려는 메뉴의 이름들이 문자열 형태로 들어있습니다.
- order_list에는 같은 메뉴의 이름이 중복해서 들어있지 않습니다.
- 메뉴의 이름과 가격은 PizzaStore의 생성자에서 초기화해줍니다.
□ return 값 설명
주문한 메뉴의 전체 가격을 return 해주세요.
□ 예시
order_list | return |
["Cheese", "Pineapple", "Meatball"] | 51600 |
해당 문제는 주어진 빈칸을 채우면 된다.
문제)
// 다음과 같이 import를 사용할 수 있습니다.
import java.util.*;
class Main {
interface DeliveryStore{
public void setOrderList(String[] orderList);
public int getTotalPrice();
}
class Food{
public String name;
public int price;
public Food(String name, int price){
this.name = name;
this.price = price;
}
}
class PizzaStore _________________________ {
private ArrayList<Food> menuList;
private ArrayList<String> orderList;
public PizzaStore(){
menuList = new ArrayList<Food>();
String[] menuNames = {"Cheese", "Potato", "Shrimp", "Pineapple", "Meatball"};
int[] menuPrices = {11100, 12600, 13300, 21000, 19500};
for(int i = 0; i < 5; i++)
menuList.add(new Food(menuNames[i], menuPrices[i]));
orderList = new ArrayList<String>();
}
public ___________________ {
for(int i = 0; i < orderList.length; i++)
this.orderList.add(orderList[i]);
}
public ___________________ {
int totalPrice = 0;
Iterator<String> iter = orderList.iterator();
while (iter.hasNext()) {
String order = iter.next();
for(int i = 0; i < menuList.size(); i++)
if(order.equals(menuList.get(i).name))
totalPrice += menuList.get(i).price;
}
return totalPrice;
}
}
public int solution(String[] orderList) {
DeliveryStore deliveryStore = new PizzaStore();
deliveryStore.setOrderList(orderList);
int totalPrice = deliveryStore.getTotalPrice();
return totalPrice;
}
정답)
// 다음과 같이 import를 사용할 수 있습니다.
import java.util.*;
class Main {
interface DeliveryStore{
public void setOrderList(String[] orderList);
public int getTotalPrice();
}
class Food{
public String name;
public int price;
public Food(String name, int price){
this.name = name;
this.price = price;
}
}
class PizzaStore implements DeliveryStore {
private ArrayList<Food> menuList;
private ArrayList<String> orderList;
public PizzaStore(){
menuList = new ArrayList<Food>();
String[] menuNames = {"Cheese", "Potato", "Shrimp", "Pineapple", "Meatball"};
int[] menuPrices = {11100, 12600, 13300, 21000, 19500};
for(int i = 0; i < 5; i++)
menuList.add(new Food(menuNames[i], menuPrices[i]));
orderList = new ArrayList<String>();
}
public void setOrderList(String[] orderList){
for(int i = 0; i < orderList.length; i++)
this.orderList.add(orderList[i]);
}
public int getTotalPrice(){
int totalPrice = 0;
Iterator<String> iter = orderList.iterator();
while (iter.hasNext()) {
String order = iter.next();
for(int i = 0; i < menuList.size(); i++)
if(order.equals(menuList.get(i).name))
totalPrice += menuList.get(i).price;
}
return totalPrice;
}
}
public int solution(String[] orderList) {
DeliveryStore deliveryStore = new PizzaStore();
deliveryStore.setOrderList(orderList);
int totalPrice = deliveryStore.getTotalPrice();
return totalPrice;
}
// 아래는 테스트케이스 출력을 해보기 위한 main 메소드입니다.
public static void main(String[] args) {
Main sol = new Main();
String[] orderList = {"Cheese", "Pineapple", "Meatball"};
int ret = sol.solution(orderList);
// [실행] 버튼을 누르면 출력 값을 볼 수 있습니다.
System.out.println("solution 메소드의 반환 값은 " + ret + " 입니다.");
}
}
해설)
문제를 이해하지 않아도 자바의 문법을 알고있으면 풀 수 있는 문제같다.
implements 로 인터페이스를 구현하고
구현한 메서드의 return 값에 맞게 반환타입을 지정해주면 된다.
'코딩테스트' 카테고리의 다른 글
[1차] 문제2) 해밍 거리 구하기 - JAVA (0) | 2022.10.17 |
---|---|
[코딩테스트] 백준 6번 알람 시계 (백준 2884번) - Java (0) | 2022.10.12 |
[코딩테스트] 백준 자바 5번 사분면 고르기 (백준 14681번) (0) | 2022.10.09 |
[코딩테스트] 백준 자바 4번 윤년 (백준 2753번) (0) | 2022.10.03 |
[코딩테스트] 백준 자바 3번 시험 성적 (백준 9498번) (0) | 2022.10.03 |