18706

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

// 메뉴 구조체 
typedef struct menu
{
    char name[16];      // 메뉴 이름
    int small_price;    // s사이즈 가격
    int medium_price;   // m사이즈 가격
    int large_price;    // l사이즈 가격
}MENU;
  

int main(void){
    // 테스트 케이스 입력
    int test_case = 0;
    scanf("%d", &test_case);

    for(int i = 0; i < test_case; i++){
        // 메뉴 개수와, 주문 개수 입력
        int menu_num = 0, order = 0;
        scanf("%d %d", &menu_num, &order);

        // 배달비 계산
        int delivery_price = 100/order;

        // 메뉴 이름, 사이즈 별 가격 입력 받기
        MENU *menu_arr =(MENU *)malloc(sizeof(MENU)*menu_num);
        for(int j = 0; j < menu_num; j++){
            getchar();
            scanf("%s %d %d %d",
                &menu_arr[j].name, 
                &menu_arr[j].small_price, 
                &menu_arr[j].medium_price,
                &menu_arr[j].large_price);
        }

        for(int j = 0; j < order; j++){
            // 총 가격에 배달비 기본으로 깔기
            int total_price = delivery_price;

            // 주문자 이름, 메뉴 이름, 사이즈 입력 받기
            char name[16];
            char menu_name[16];
            char size[16];
            scanf("%s %s %s", &name, &size, &menu_name);

            // 주문자가 주문한 메뉴와 같은 메뉴 찾기
            int k = 0;
            for(k; k < menu_num; ){
                if(strcmp(menu_name, menu_arr[k].name) == 0){
                    break;
                }
                k++;
            }


            // 사이즈 찾아서 총 가격에 맞는 사이즈의 가격 더해주기
            if(strcmp(size,"small") == 0){
                total_price += menu_arr[k].small_price;
            }
            else if(strcmp(size,"medium") == 0){
                total_price += menu_arr[k].medium_price;
            }
            else if(strcmp(size,"large") == 0){
                total_price += menu_arr[k].large_price;
            }


            // 특이한 반올림임
            // 5배수인데 +- 1차이 나는 애들만 반올림 해주기
            // ex) 26 -> 25, 49 -> 50
            if((total_price%5) == 1){
                total_price = total_price-1;
            }
            else if((total_price%5) == 4){
                total_price = total_price+1;
            }

            // 출력
            printf("%s %d\n", name, total_price);
            total_price = 0; 
        }
    }
    return 0;
}

'백준' 카테고리의 다른 글

[ 백준 / C ] 2743번 : 단어 길이 재기  (0) 2026.01.22
[ 백준 / C ] 9919번 : Route  (0) 2026.01.19
[ 백준 / C ] 9388번 : Arbiter Login  (0) 2026.01.16
[ 백준 / C ] 5359번 : Music  (0) 2026.01.15
[ 백준 / C ] 10430번 : 나머지  (0) 2026.01.13

+ Recent posts