[BOJ] 7785: 회사에 있는 사람

이슬비·2023년 11월 15일
0

Algorithm

목록 보기
103/110
post-thumbnail

음하하 오랜만에 한 번에 통과!
내 수준은 실버 5인가 ? ...

1. 내 풀이: 성공

# 실버 5 | 회사에 있는 사람

import sys
input = sys.stdin.readline

n = int(input())
log = dict()

for _ in range(n):
    worker, state = map(str, input().rstrip().split())
    if state == 'enter':
        log[worker] = 1
    else:
        log[worker] = 0

incompany = [worker for worker in log.keys() if log[worker] == 1]
incompany.sort(reverse=True)

for i in incompany:
    print(i)

처음에는 약간 pop 같은 메소드를 써야하나? 생각했다가 시간 초과뜰 것 같아서 받을 때 회사에 있는 사람인지 아닌지 판단하기로 했다.
간단한 코드니 설명은 생략 !

2. 다른 풀이

import sys
input = sys.stdin.readline

# 입력
N = int(input())
company = {}
for _ in range(N):
    man, state = input().rstrip().split()
    if state == 'enter':
        company[man] = True
    else:
        del company[man]

# 출력
print("\n".join(sorted(company.keys(), reverse=True)))

출처: https://star7sss.tistory.com/398

나는 dictionary의 value를 바꿔주는 식으로 진행했는데, 만약 leave라면 아예 그 key 값을 삭제하는 것도 하나의 방법이었다.
이렇게 하면 dictionary의 value를 한 번 더 찾아주지 않아도 되니 시간이 더 줄어들 것 같군 ...

실제로도 시간이 꽤나 많이 줄었다.
Hash 삭제는 del ... 잊지말기!

3. 느낀점

역시 다른 사람의 코드를 보고 내 코드를 반성하는 작업은 꼭 필요하다.

profile
정말 알아?

0개의 댓글