본문 바로가기
백준

[백준] 7785번 : 회사에 있는 사람 - 파이썬(Python) - 우당탕탕 개발자 되기 프로젝트

by 우당탕탕 개발자 2023. 11. 20.
728x90
반응형

 

 

7785번: 회사에 있는 사람

첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는

www.acmicpc.net

 

1. 문제 설명

2. 풀이과정

해당 문제는 사람별 출입 기록을 딕셔너리에 key와 value로 저장하고 이를 활용해 회사에 있는 사람의 이름을 저장하고 이를 사전의 역순으로 정렬하여 출력하면 된다.

 

  1. sys.stdin.readline() 함수를 사용하기 위해 sys 모듈을 불러온다. import sys
  2. 기록된 출입 기록의 수를 입력받는다. n = int(sys.stdin.readline())
  3. 출입 기록을 저장할 딕셔너리를 생성한다. d = {}
  4. 출입 기록의 수만큼 반복하며 for _ in range(n)
  5. 이름과 출입 기록을 입력받는다. name, action = map(str, sys.stdin.readline().split())
  6. 딕셔너리에 해당 이름에 대한 출입 기록을 저장한다. d[name] = action
  7. 회사에 남아 있는 사람의 이름을 저장할 리스트를 생성한다. result = list()
  8. 딕셔너리의 key와 value를 튜플로 만들어 하나씩 불러오며 for k, v in d.items()
  9. 만약 해당 value가 enter이면 if (v == 'enter')
  10. 해당 사람의 이름을 리스트에 추가한다. result.append(k)
  11. 회사에 남아 있는 사람의 이름을 사전 순의 역순으로 정렬한다. result.sort(reverse=True)
  12. 사람의 이름을 하나씩 불러오며 이름을 출력한다. for i in result: print(i)
반응형

3. 소스코드

import sys

n = int(sys.stdin.readline())

d = {}
for _ in range(n):
    name, action = map(str, sys.stdin.readline().split())
    d[name] = action

result = list()
for k, v in d.items():
    if (v == 'enter'):
        result.append(k)

result.sort(reverse=True)
for i in result:
    print(i)
728x90
반응형