일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- dfs
- 취뽀
- 백준
- UML
- 코테
- 싸피 13기
- 삼성청년SW아카데미
- 마이스터고
- 삼성 청년 SW 아카데미
- 비전공자
- 코딩테스트
- SWEA
- 싸피
- 정보처리기사
- 프리코스
- 삼성 부트캠프
- 13기
- 부트캠프
- 정처기
- 디자인패턴
- 코딩
- 삼성
- 우테코
- 파이썬
- 백준 2003
- 개발자
- 삼성 청년 sw아카데미
- SSAFY
- 우테코 7기
- 우테코 프리코스
Archives
- Today
- Total
룰루코딩
백준 7785 회사에 있는 사람 본문
문제
솔루션
import sys
input=sys.stdin.readline
n = int(input())
li=set()
for _ in range(n):
name,inout = map(str,input().split())
if inout=="enter":
li.add(name)
elif inout=="leave":
li.remove(name)
li = sorted(li, reverse=True)
for i in li:
print(i)
깨달은점
처음에 list로 풀었다가 시간초과가 떴다.
그래서 set로 바꾸었고
set으로 바꿈으로써 li.append대신 li.add 로 바꾸었다.
또한 sort()는 리스트 함수이므로 sorted()로 바꾸어서 풀었다.
시간을 더 단축시키기 위해서는 이전문제들처럼 딕셔너리로 푸는 것이 좋다.
import sys
input = sys.stdin.readline
n = int(input())
dict = {}
for _ in range(n):
name, inout = input().rstrip().split()
dict[name] = inout
if inout == "leave":
del dict[name]
dict = sorted(dict.keys(), reverse=True)
for i in dict:
print(i)
.rstrip()은 split()자체에서 제거해줘서 안써도 되지만 사용하면 시간이 약간 더 단축되었다.
그리고 map(str,input())은 안써도 됐다.(시간이 더 늘어남)
print("\n".join(sorted(dict.keys(), reverse=True)))
이건 출력 부분을 더 간단하게 줄일 수 있는 코드이다.
'백준' 카테고리의 다른 글
백준 1260 DFS와 BFS (1) | 2024.10.01 |
---|---|
백준 1094 막대기 (0) | 2024.10.01 |
백준 17219 비밀번호 찾기 (2) | 2024.09.28 |
백준 1620 나는야 포켓몬 마스터 이다솜 (2) | 2024.09.27 |
백준 1789 수들의 합 (1) | 2024.09.26 |