091
[C#] TQC+ 문제 CS_609: 본문
728x90
🔍C#: CS_609.
주어진 휴게시간 이상의 값을 쉰 날의 휴게시간을 매니저와 직원을 나눠 누적합을 구하시오.
1. 문제 정답
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using System.Threading;
namespace CSD06
{
class CSD06
{
static void Main(string[] args)
{
try
{
string str = Console.ReadLine();
int hh = Convert.ToInt32(str.ToString());
List<Manager> mgers = new List<Manager>();
List<Worker> wors = new List<Worker>();
using(StreamReader reader = new StreamReader("read.txt")){
string line;
while ((line = reader.ReadLine()) != null){
string[] part = line.Split(',');
int hour = Convert.ToInt32(part[3]);
if(part[1] == "m"){
Manager m = chkManager(mgers, part);
if(hour >= hh){
m.takeLeave(hour);
}
} else {
Worker w = chkWorker(wors, part);
if(hour >= hh){
w.takeLeave(hour);
}
}
}
}
int ml = 0, wl = 0;
foreach (Manager m in mgers)
{
ml += m.leavehours;
}
foreach (Worker w in wors)
{
wl += w.leavehours;
}
Console.Write("Manager{0}hr/Worker{1}hr", ml, wl);
}
catch
{
Console.Write("error");
}
Console.ReadKey();
}
private static Manager chkManager(List<Manager> ms, string[] data)
{
foreach (Manager m in ms)
{
if (m.name == data[0].ToString()){
return m;
}
}
Manager newm = new Manager(data[0].ToString());
ms.Add(newm);
return newm;
}
private static Worker chkWorker(List<Worker> ss, string[] data)
{
foreach (Worker s in ss)
{
if (s.name == data[0].ToString())
{
return s;
}
}
Worker news = new Worker(data[0].ToString());
ss.Add(news);
return news;
}
}
interface ILeave{
void takeLeave(int hours);
}
public class Staff : ILeave
{
public string name = "";
public bool isleader = false;
public int leavehours = 0;
public void takeLeave(int hours){
leavehours += hours;
}
}
public class Manager : Staff
{
public Manager(string n)
{
this.name = n;
this.isleader = true;
}
}
public class Worker : Staff{
public Worker(string n){
this.name = n;
}
}
}
2. 정답
- 파일에서 이름이 같은 경우에는 해당 매니저 객체의 시간에 누적해야하므로 주어진 함수 chkManager/Worker을 이용하여 구해줍니다. 매니저와 직원 클래스의 경우, 문제에서 ILeave을 구체화하라고 했으나 각각할 필요없이 구체화된 함수는 아예 같은 내용이므로, 두 클래스의 부모 함수에서 구체화해주는 것이 좋습니다.
728x90
'Programming Language > C#' 카테고리의 다른 글
[C#] TQC+ 문제 CS_610: (1) | 2025.06.15 |
---|---|
[C#] TQC+ 문제 CS_608: (1) | 2025.06.15 |
[C#] TQC+ 문제 CS_607: (0) | 2025.06.15 |
[C#] TQC+ 문제 CS_606: (0) | 2025.06.15 |
[C#] TQC+ 문제 CS_605: (0) | 2025.06.15 |