ENTER라는 입력을 기준으로,
각 구간에 포함된 사람의 수를 구하는 문제이다.
이때 각 구간에 중복으로 나오는 사람이 있다면 1명으로 생각한다.
n만큼 닉네임을 입력 받으면서..
1) 입력이 ENTER라면,
1-1) 현재 구간(messages)에 포함된 중복 없는 사람의 수를 더한다.
1-2) 구간을 빈 리스트로 초기화한다.
2) 입력이 ENTER가 아니라면,
구간에 해당되는 messages 리스트에 추가한다.
마지막에 ENTER가 나오지 않는 경우,
마지막 구간의 사람 수는 더해지지 않기 때문에,
for문이 종료된 이후 1-1의 과정을 한 번 더 반복한다.
코드(정답)는 다음과 같다.
# 25192
import sys
n = int(sys.stdin.readline())
messages = []
cnt = 0
for _ in range(n):
chat = sys.stdin.readline().rstrip()
if chat == 'ENTER':
cnt += len(set(messages))
messages = []
else:
messages.append(chat)
cnt += len(set(messages))
print(cnt)
리스트를 사용하지 않고 바로 집합 자료형으로 풀어도 된다.
코드는 비슷한데,
실행 시간은 조금 더 빠르다.
코드(정답)는 다음과 같다.
import sys
n = int(sys.stdin.readline())
messages = set()
cnt = 0
for _ in range(n):
chat = sys.stdin.readline().rstrip()
if chat == 'ENTER':
cnt += len(messages)
messages = set()
else:
messages.add(chat)
cnt += len(messages)
print(cnt)