[백준] 7785 - 회사에 있는 사람
1. 문제
2. 개요
한 회사의 출퇴근 기록이 주어진다.
현재 회사에 남아있는 사원들의 이름을 사전의 역순으로 출력하는 문제.
3. 풀이 및 코드
3-1. 풀이
Set을 이용한다.
누군가 출근했다면 Set에 넣어주고, 퇴근했다면 Set에서 빼준다.
모든 입력에 대해 작업을 완료했으면 정렬하여 출력한다.
이 때, 문제에서는 사전의 역순이라고 되어있지만 사실은 아스키 코드의 역순이다.
Python의 경우에는 그냥 냅다 역순정렬해도 잘 되지만 C#의 경우 StringComparer.Ordinal을 이용해 이를 맞춰줘야 한다.
3-2. Python
import sys
N = int(sys.stdin.readline())
S = set()
for i in range(N):
info = sys.stdin.readline().split()
if info[1] == "enter":
S.add(info[0])
else:
S.discard(info[0])
for p in sorted(list(S), reverse=True):
print(p)
3-3. C#
namespace boj_7785
{
internal class Program
{
static void Main(string[] args)
{
StreamReader sr = new StreamReader(Console.OpenStandardInput());
StreamWriter sw = new StreamWriter(Console.OpenStandardOutput());
int N = int.Parse(sr.ReadLine());
HashSet<string> S = new();
for(int i = 0; i < N; i++)
{
string[] info = sr.ReadLine().Split();
if (info[1] == "enter")
S.Add(info[0]);
else
S.Remove(info[0]);
}
foreach(string p in S.ToList().OrderByDescending(x => x, StringComparer.Ordinal).ToList())
{
sw.WriteLine(p);
}
sw.Close();
}
}
}
Comments