Menu
Coddy logo textTech

재고 제거

Coddy C++ 여정의 로직과 흐름 섹션에 포함된 레슨 — 56개 중 33번째.

challenge icon

챌린지

쉬움

기존 품목에서 재고를 제거하는 기능을 구현하여 재고 추적 시스템을 완성하세요. 이 레슨에서는 재고 수량이 0 미만으로 떨어지는 것을 방지하고 재고에 존재하지 않는 품목을 처리하면서 안전하게 재고 수량을 줄이는 방법을 보여줍니다.

다음의 초기 재고로 시작하세요:

  • apples: 50
  • bananas: 30
  • oranges: 25

다음과 같은 입력이 제공됩니다:

  • 수행할 재고 제거 작업의 횟수를 나타내는 정수 n
  • 그 다음 n 쌍의 입력:
    • 품목 이름을 나타내는 문자열
    • 제거할 수량을 나타내는 정수

프로그램은 다음을 수행해야 합니다:

  1. 위에 나열된 초기 재고로 시작합니다.
  2. 재고 제거 작업의 횟수를 읽습니다.
  3. 각 작업에 대해 품목 이름과 제거할 수량을 읽습니다.
  4. .count() 메서드를 사용하여 품목이 재고 맵에 존재하는지 확인합니다.
  5. 품목이 존재하지 않으면 에러 메시지를 출력합니다.
  6. 품목이 존재하면 수량을 제거했을 때 재고가 음수가 되는지 확인합니다.
  7. 제거 결과가 음수 재고가 될 경우 에러 메시지를 출력합니다.
  8. 제거가 유효하면 현재 재고에서 수량을 빼고 확인 메시지를 출력합니다.
  9. 모든 작업이 끝난 후, 모든 품목과 업데이트된 수량을 보여주는 최종 재고를 출력합니다.

다음의 정확한 출력 형식을 사용하세요:

재고 제거에 성공한 경우:

Removed [quantity] [item_name]. New total: [new_total]

품목을 찾을 수 없는 경우:

Error: [item_name] not found in inventory

재고가 부족한 경우:

Error: Cannot remove [quantity] [item_name]. Only [current_stock] in stock

최종 재고:

Final Inventory:\n[item1]: [quantity1]\n[item2]: [quantity2]\n[item3]: [quantity3]\n...

최종 재고는 품목 이름의 알파벳 순서대로 출력되어야 합니다. 재고를 제거하기 전에 inventory.count(itemName)을 사용하여 품목이 존재하는지 확인하세요. 품목이 존재하고 현재 재고가 제거하려는 수량보다 크거나 같을 때만 재고에서 뺍니다. 기존 재고에서 수량을 빼려면 inventory[itemName] -= quantity를 사용하세요.

직접 해보기

#include <iostream>
#include <map>
#include <string>
using namespace std;

int main() {
    // Initialize inventory with existing items
    map<string, int> inventory;
    inventory["apples"] = 50;
    inventory["bananas"] = 30;
    inventory["oranges"] = 25;
    inventory["grapes"] = 40;
    
    int n;
    cin >> n;
    
    for (int i = 0; i < n; i++) {
        string itemName;
        cin >> itemName;
        
        if (inventory.count(itemName)) {
            cout << itemName << ": " << inventory[itemName] << " in stock" << endl;
        } else {
            cout << itemName << ": Item not found" << endl;
        }
    }
    
    cout << "Total items in inventory: " << inventory.size() << endl;
    
    return 0;
}

로직과 흐름의 모든 레슨