[파이썬 - 7785] 회사에 있는 사람

2023. 4. 11. 14:29Algorithm

문제

 

상근이는 세계적인 소프트웨어 회사 기글에서 일한다. 이 회사의 가장 큰 특징은 자유로운 출퇴근 시간이다. 따라서, 직원들은 반드시 9시부터 6시까지 회사에 있지 않아도 된다.
각 직원은 자기가 원할 때 출근할 수 있고, 아무때나 퇴근할 수 있다.
상근이는 모든 사람의 출입카드 시스템의 로그를 가지고 있다. 이 로그는 어떤 사람이 회사에 들어왔는지, 나갔는지가 기록되어져 있다. 로그가 주어졌을 때, 현재 회사에 있는 모든 사람을 구하는 프로그램을 작성하시오.

 

해당 문제는 데이터를 입력해 로그 작성해서 해당 직원이 회사에 남아있나 퇴근했나를 확인하는 문제이다.

 

처음 작성한 코드

해당 코드의 문제점은 log 값이 리스트로 작성되어 있고 문제에서 요구한 문자열 제한 5글자또한 들어가있지 않았다
때문에 제출 결과는 틀림

n = int(input())

def enter(name):
  log.append(name)

def leave(name):
  log.remove(name)
  
# 회사 사람들 로그
log = []

for _ in range(n):
  name, state = map(str, input().split())
  
  if state == "enter":
    enter(name)
  elif state == "leave":
    leave(name)

print("\n".join(str(i) for i in log))

 

마지막 작성 코드로 

기존 문제점이 였던 log를 set()으로 수정해 만약 중복된 방지와 이로 인한 실행 속도 계선

문자열 개수 제한등을  추가하였다.

n = int(input())

def enter(name):
  log.add(name[:5])

def leave(name):
  log.remove(name[:5])
  
# 회사 사람들 로그
log = set()

for _ in range(n):
  name, state = map(str, input().split())
  
  if state == "enter":
    enter(name)
  elif state == "leave":
    leave(name)

for name in sorted(log, reverse=True):
  print(name)