https://www.acmicpc.net/problem/14653
풀이 과정
- 문제를 풀면서 고려해야 할 점이 좀 있음..
- Q 위치 이후에 채팅을 친 사람들은 무조건 읽은 사람
- Q 위치 이전에 채팅을 친 사람들 중 Q 위치에서 읽은 사람과 읽지 않은 인원이 같은 경우에도 해당 사람 또한 읽은 사람이라고 볼 수 있다.
- 두가지 케이스에 맞추어서 정답 출력을 하면 된다. 단, 읽지 않은 사람의 수가 0인 경우에는 -1을 출력해준다.
- 여기서 읽지 않은 사람의 카운트를 입력받은걸로 하지 않고.. 정답 리스트의 길이가 0인 경우로 했다가 오답처리가 계속 나왔다..
소스 코드
import sys
input = lambda: sys.stdin.readline().rstrip()
N, K, Q = map(int, input().split())
people = set([chr(ch) for ch in range(ord('A'), ord('A')+N)])
people.remove('A')
messages = [[0, 0]] + [input().split() for _ in range(K)]
for i in range(Q, len(messages)):
if messages[i][1] in people:
people.remove(messages[i][1])
for i in range(Q-1, 0, -1):
if messages[i][0] == messages[Q][0]:
if messages[i][1] in people:
people.remove(messages[i][1])
else:
break
people_list = sorted(list(people))
if messages[Q][0] == '0':
print(-1)
else:
print(*people_list)
'알고리즘[Python] > 백준 알고리즘' 카테고리의 다른 글
[ 6550 ] [ Queue ] 부분 문자열 (0) | 2021.10.12 |
---|---|
[ 16401 ] [이분 탐색] 과자 나눠주기 (0) | 2021.10.09 |
[ 2251 ] [ BFS ] 물통 (0) | 2021.10.07 |
[ 2812 ] [ Stack ] 크게 만들기 (0) | 2021.10.06 |
[ 13414 ] [ Hash ] 수강신청 (0) | 2021.10.04 |