트랙
/
Cairo
Cairo
/
연습 문제
/
빵집 주문 시스템
빵집 주문 시스템

빵집 주문 시스템

학습 연습 문제

소개

Cairo의 제어 흐름을 사용하면 조건과 반복에 따라 프로그램의 실행 경로를 제어할 수 있어요.

조건부 실행

조건에 따라 코드를 실행하려면 if 표현식을 사용해요:

let number = 42;
if number > 0 {
    println!("Positive number");
} else if number < 0 {
    println!("Negative number");  
} else {
    println!("Zero");
}

if는 표현식이기 때문에 값을 반환할 수 있어요:

let result = if condition { 5 } else { 10 };

루프

코드를 반복하려면 loop를 사용해요. 루프는 멈추지 않는 한 계속 실행돼요. 조건이 충족되면 break로 루프를 종료해요.

let mut counter = 0;
loop {
    if counter == 5 {
        break;
    }
    println!("Counter: {}", counter);
    counter += 1;
}

루프는 break를 사용해 값을 반환할 수 있어요:

let result = loop {
    counter += 1;
    if counter == 10 {
        break counter * 2; // Returns 20
    }
};

다음 반복으로 건너뛰려면 continue를 사용해요:

let mut i = 0;
loop {
    i += 1;
    if i % 2 == 0 {
        continue; // Skip even numbers
    }
    if i > 10 {
        break;
    }
    println!("{}", i); // Only prints odd numbers
}

지침

이 연습 문제에서는 Cairo의 제어 흐름 구문을 사용해 작은 빵집의 일상 운영을 관리해요.

1. 주문 총액 계산하기

페이스트리 종류와 수량을 바탕으로 주문 비용을 계산하는 calculate_total을 구현해요:

  • 크루아상: 개당 3코인
  • 머핀: 개당 2코인
  • 쿠키: 개당 1코인
calculate_total(Pastry::Croissant, 4) // Returns: 12 (4 * 3)
calculate_total(Pastry::Cookie, 10)   // Returns: 10 (10 * 1)

2. 대량 할인 적용하기

주문 총액을 기준으로 할인을 적용하는 apply_discount를 구현해요. 총액에 할인율을 적용한 다음, 가장 가까운 정수 코인으로 내림해요(floor).

  • 주문 금액이 20코인 이상: 10% 할인
  • 주문 금액이 10코인 이상: 5% 할인
  • 주문 금액이 10코인 미만: 할인 없음
apply_discount(25) // Returns: 22
apply_discount(15) // Returns: 14
apply_discount(8)  // Returns: 8

3. 베이킹 일정 만들기

하루치 베이킹 계획을 만드는 baking_schedule을 구현해요. 빵집은 한 시간에 주문 5개씩 묶음 단위로 구워요:

baking_schedule(18) // Returns: [5, 5, 5, 3] (3 full batches + 3 remaining)
baking_schedule(10) // Returns: [5, 5] (2 full batches)
baking_schedule(3)  // Returns: [3] (1 partial batch)

각 문제를 효율적으로 해결하려면 적절한 제어 흐름 구문(if/else, loop)을 사용해요.

GitHub에서 편집 링크가 새 창이나 탭에서 열려요
Cairo Exercism

빵집 주문 시스템 문제를 시작해 볼 준비가 됐나요?

Exercism에 가입하고 Cairo 트랙을 개념 25개연습 문제 68개, 그리고 실제 사람의 멘토링과 함께 배우고 익혀 보세요. 모두 무료예요.