Menu
Coddy logo textTech

프로젝트 개요

Coddy GO 여정의 로직 & 흐름 섹션에 포함된 레슨 — 68개 중 45번째.

challenge icon

챌린지

쉬움

제품 재고 수준을 관리하는 데 도움이 되는 간단한 재고 확인 시스템을 구축해 보겠습니다.

핵심 데이터 구조를 생성하고 초기 재고 데이터를 표시하여 재고 관리 시스템의 기초를 설정합니다. 이 챌린지에서는 프로젝트 전반에 걸쳐 사용될 Product 구조체와 재고 맵(inventory map)을 설정합니다.

두 개의 입력을 받게 됩니다:

  • "store_name,location" 형식의 상점 정보를 포함하는 문자열 (예: "TechStore,Downtown")
  • "product1:price1:quantity1,product2:price2:quantity2,product3:price3:quantity3" 형식의 초기 제품 데이터를 포함하는 문자열 (예: "Laptop:999.99:5,Mouse:25.50:15,Keyboard:75.00:8")

여러분의 과제는 다음과 같습니다:

  1. 두 개의 필드를 가진 Product 구조체를 생성합니다:
    • Price (float64) - 제품의 가격
    • Quantity (int) - 현재 재고 수량
  2. 첫 번째 입력을 쉼표로 분리하여 상점 이름과 위치를 가져옵니다.
  3. 두 번째 입력을 쉼표로 분리하여 개별 제품 항목을 가져옵니다.
  4. 각 제품 항목에 대해 콜론을 기준으로 분리하여 제품 이름, 가격, 수량을 가져옵니다.
  5. 가격 문자열을 float64로, 수량 문자열을 int로 변환합니다.
  6. 키는 제품 이름(string)이고 값은 Product 구조체인 inventory라는 이름의 맵을 생성합니다.
  7. 파싱된 제품 데이터로 inventory 맵을 채웁니다.
  8. 상점 정보를 표시합니다:
    • "=== [store_name] Inventory System ==="
    • "Location: [location]"
    • "Inventory initialized with [number_of_products] products"
  9. 현재 재고를 제품 이름의 알파벳 순서로 표시합니다:
    • "Current Inventory:"
    • 각 제품에 대해: "- [product_name]: $[price] (Stock: [quantity])"
  10. 재고 통계를 계산하고 표시합니다:
    • "Inventory Statistics:"
    • "Total Products: [total_number_of_products]"
    • "Total Items in Stock: [sum_of_all_quantities]"
    • "Total Inventory Value: $[sum_of_price_times_quantity_for_all_products]"
  11. 시스템 상태를 표시합니다:
    • "System Status: Ready"
    • "Inventory management system initialized successfully"

입력 문자열을 분리하기 위해 strings 패키지를, 문자열을 숫자로 변환하기 위해 strconv 패키지를, 형식화된 출력을 위해 fmt 패키지를, 제품 이름을 알파벳 순으로 정렬하기 위해 sort 패키지를 사용하세요. 총 재고 가치는 소수점 둘째 자리까지 표시합니다. 이 챌린지는 재고 관리 프로젝트의 후속 레슨에서 확장될 기초 데이터 구조를 설정합니다.

직접 해보기

package main

import (
	"bufio"
	"fmt"
	"os"
	"sort"
	"strconv"
	"strings"
)

// TODO: 여기에 Product 구조체를 정의하세요

func main() {
	// 공백을 올바르게 처리하기 위해 bufio.Scanner를 사용하여 입력을 읽습니다
	scanner := bufio.NewScanner(os.Stdin)
	
	scanner.Scan()
	storeInfo := scanner.Text()
	
	scanner.Scan()
	productData := scanner.Text()
	
	// TODO: 아래에 코드를 작성하세요
	// 1. 상점 정보 파싱 (쉼표로 분리, 길이 확인)
	// 2. 제품 데이터 파싱 (쉼표로 분리한 후, 각 제품에 대해 콜론으로 분리)
	// 3. 재고 맵 생성
	// 4. 문자열을 적절한 타입으로 변환하고 재고를 채웁니다
	// 5. 상점 정보 표시
	// 6. 현재 재고 표시 (알파벳순 정렬)
	// 7. 재고 통계 계산 및 표시
	// 8. 시스템 상태 표시
	
}

로직 & 흐름의 모든 레슨