Machineboy空
クラスの継承 본문
문제요약
주류 주문 나이 제한하기
ログイン
ログイン画面です。|ITエンジニア・プログラマ向け総合求職・学習サイト【paiza】
paiza.jp
見立てる(みたてる) | お客さんをクラスに見立てること | |
取り消す(とりけす) | その注文は取り消されます | |
かつ | かつ、成年済のクラスには未成年のクラスの機能が全て備わっていることがわかります。 | 한편으로 |
난이도
B rank
풀이 포인트
- virtual 과 override의 개념
- get, set
REVIEW
계승의 개념을 이해하고 생성자 개념 제대로 이해하면서 짜기.
기초를 탄탄히.
CODE
using System;
using System.Collections.Generic;
class Customer
{
public int Amount { get; protected set; }
public Customer()
{
Amount = 0;
}
public virtual void TakeFood(int m)
{
Amount += m;
}
public virtual void TakeSoftDrink(int m)
{
Amount += m;
}
public virtual void TakeAlcohol(int m)
{
// 기본 Customer는 술을 마실 수 없음
}
}
class Adult : Customer
{
private bool drunk;
public Adult() : base()
{
drunk = false;
}
public override void TakeFood(int m)
{
if (drunk)
{
m -= 200;
}
base.TakeFood(m);
}
public override void TakeAlcohol(int m)
{
drunk = true;
Amount += m;
}
}
class Program
{
static void Main()
{
var input = Console.ReadLine().Split();
int n = int.Parse(input[0]);
int k = int.Parse(input[1]);
List<Customer> customers = new List<Customer>();
for (int i = 0; i < n; i++)
{
int age = int.Parse(Console.ReadLine());
if (age < 20)
{
customers.Add(new Customer());
}
else
{
customers.Add(new Adult());
}
}
for (int i = 0; i < k; i++)
{
var line = Console.ReadLine().Split();
int index = int.Parse(line[0]) - 1;
string type = line[1];
int m = int.Parse(line[2]);
if (type == "food")
{
customers[index].TakeFood(m);
}
else if (type == "softdrink")
{
customers[index].TakeSoftDrink(m);
}
else if (type == "alcohol")
{
customers[index].TakeAlcohol(m);
}
}
foreach (var customer in customers)
{
Console.WriteLine(customer.Amount);
}
}
}
'Computer > Coding Test' 카테고리의 다른 글
Day20: プログラマー必携!2025年バイブコーディング(vibe coding)ツール完全ガイド (0) | 2025.06.06 |
---|---|
「RPG C#編」 (0) | 2025.06.04 |
B081:花壇のロープ (0) | 2025.05.27 |
A074:オリオン座 (0) | 2025.05.16 |
B140:ネズミ駆除 OrderByDescending (0) | 2025.05.13 |