오늘 배운 큐를 이용해서 자판기를 만들어보자!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Management.Instrumentation;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
// Milk라는 클래스와 VendingMachine 이라는 클래스를 하나 만들겠습니다.
// Milk의 맴버변수로, 유통기한을 나타내는 int를 작성해주시기 바랍니다.
// VendingMachine 클래스에는 Queue를 활용하여 Milk를 담을 수 있는 컨테이너를 필드로 작성하여 주시기 바랍니다.
// 벤딩머신의 메소드로, 우유를 집어넣는 코드와 우유를 꺼내는 기능을 작성하되,
// 꺼낼때는 콘솔에 유통기한 및 큐에 남아있는 갯수를 출력하는 기능을 작성해주시기 바랍니다.
// 갯수가 0일때 우유를 꺼내는 기능을 호출하게 되면 꺼내는 대신 다른 멘트가 나오게끔 작성해주시길 바랍니다.
namespace _250924_HoChan
{
public class Milk
{
public int Expire { get; set; }
public Milk(int expire)
{
Expire = expire;
}
}
class VendingMachine
{
Queue<Milk> Container = new Queue<Milk>();
public int Count
{
get { return Container.Count; }
}
public void Insert(Milk milk)
{
Container.Enqueue(milk);
}
public Milk Extract()
{
string input = Console.ReadLine();
if (Container.Count == 0)
{
Console.WriteLine("우유가 없습니다.");
return null;
}
else
{
Milk milkBox = Container.Dequeue();
Console.WriteLine($"우유가 {Container.Count} 개 남았습니다. {milkBox.Expire} 까지 마실수 있습니다.");
return milkBox;
}
}
}
internal class Program
{
static void Main(string[] args)
{
var vm = new VendingMachine();
vm.Insert(new Milk(251024));
vm.Insert(new Milk(251030));
vm.Insert(new Milk(251101));
vm.Insert(new Milk(251110));
vm.Insert(new Milk(251208));
Console.WriteLine($"우유가 {vm.Count} 개 남았습니다.");
vm.Extract();
Console.ReadKey(true);
vm.Extract();
Console.ReadKey(true);
vm.Extract();
Console.ReadKey(true);
vm.Extract();
Console.ReadKey(true);
vm.Extract();
Console.ReadKey(true);
vm.Extract();
}
}
}
▼실습 피드백
과제 제출 수고 많았습니다!
제출 양식을 잘 지키는 모습이 보기 좋습니다.
두 개의 클래스를 제작하였습니다. 필요에 따라 .cs 파일을 나누어봅시다.
큐를 잘 활용하였습니다.
주석을 다는 습관을 키우는 것이 좋습니다. Main문에 테스트 코드를 잘 작성해주었습니다.
VendingMachine 클래스의 Extract()메서드의 string input 변수의 필요성에 대해 다시 생각해봅시다.
'📖TIL > 🔥Projects' 카테고리의 다른 글
| 콘솔 프로젝트 진행과정 001 (0) | 2025.10.02 |
|---|---|
| 콘솔 프로젝트 기획 초안 (0) | 2025.10.01 |
| 모의 발표 준비 가이드 (0) | 2025.10.01 |
| 버프와 지속 시간 구현 (0) | 2025.10.01 |
| UP & DOWN (0) | 2025.09.10 |