일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- SSL
- ConMatch
- simclrv2
- shrinkmatch paper
- 딥러닝손실함수
- dann paper
- Pix2Pix
- 백준 알고리즘
- conjugate pseudo label paper
- Entropy Minimization
- WGAN
- CycleGAN
- mocov3
- CoMatch
- tent paper
- mme paper
- CGAN
- 컴퓨터구조
- Meta Pseudo Labels
- cifar100-c
- shrinkmatch
- Pseudo Label
- dcgan
- UnderstandingDeepLearning
- adamatch paper
- GAN
- BYOL
- remixmatch paper
- 최린컴퓨터구조
- semi supervised learnin 가정
Archives
- Today
- Total
Hello Computer Vision
백준 알고리즘 7785번 [회사에 있는 사람] 파이썬 본문
https://www.acmicpc.net/problem/7785
7785번: 회사에 있는 사람
첫째 줄에 로그에 기록된 출입 기록의 수 n이 주어진다. (2 ≤ n ≤ 106) 다음 n개의 줄에는 출입 기록이 순서대로 주어지며, 각 사람의 이름이 주어지고 "enter"나 "leave"가 주어진다. "enter"인 경우는
www.acmicpc.net
일단 시간제한이 있어서 리스트를 이용해 풀면 안되겠다고 1차적으로 생각했다. 그래서 첫번째 코드대로 풀었는데 시간초과가 났는데 내가봐도 코드가 지저분하긴 하다. 그래서 다른 분들의 풀이를 한번 살펴봤다.
n = int(input())
dic_ = {}
name_list = []
for i in range(n):
name, inout = input().split()
name_list.append(name)
name_list = list(set(name_list))
if inout == 'enter':
dic_[name] = 1
else:
dic_[name] = 0
new_list = []
for i in range(len(dic_)):
if dic_[name_list[i]] == 1:
new_list.append(name_list[i])
new_list = sorted(new_list, reverse = True)
for i in new_list:
print(i)
우선 내 코드에서는 0, 1을 따로 다 지정해주었는데 여기서는 enter이 아닐 경우(leave) dict에서 해당 사람을 제외시켰다. 그리고 sorted를 이용해 dict의 key를 기준으로 정렬해 주었다. 우선 내 코드의 아쉬운 점은 0,1을 따로 지정해주어 이를 확인위해 for문을 돌리고 if문까지 돌려야한다는 단점들이 있다.
n = int(input())
dic_ = {}
name_list = []
for i in range(n):
name, inout = input().split()
if inout == 'enter':
dic_[name] = 1
else:
del dic_[name]
dic_ = sorted(dic_.keys(), reverse =True )
for i in dic_:
print(i)
'백준알고리즘' 카테고리의 다른 글
백준 알고리즘 13909번 [창문닫기] 파이썬 (0) | 2023.04.29 |
---|---|
백준 알고리즘 1735번 [분수합] 파이썬 (0) | 2023.04.25 |
백준 알고리즘 1181번 [단어 정렬] 파이썬 (0) | 2023.04.23 |
백준 알고리즘 2231번 [분해합] 파이썬 (0) | 2023.04.20 |