728x90
반응형
문제:
알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다.
ENTER는 새로운 사람이 채팅방에 입장했음을 나타낸다. 그 외는 채팅을 입력한 유저의 닉네임을 나타낸다. 닉네임은 숫자 또는 영문 대소문자로 구성되어 있다.
새로운 사람이 입장한 이후 처음 채팅을 입력하는 사람은 반드시 곰곰티콘으로 인사를 한다.
그 외의 기록은 곰곰티콘을 쓰지 않은 평범한 채팅 기록이다.
채팅 기록 중 곰곰티콘이 사용된 횟수를 구해보자!
입력:
첫 번째 줄에는 채팅방의 기록 수를 나타내는 정수 $N$ 이 주어진다. ( $1 \le N \le 100\,000$)
두 번째 줄부터 $N$ 개의 줄에 걸쳐 새로운 사람의 입장을 나타내는 ENTER, 혹은 채팅을 입력한 유저의 닉네임이 문자열로 주어진다. (문자열길이 $1 \le \texttt{문자열 길이} \le 20$)
첫 번째 주어지는 문자열은 무조건 ENTER이다.
출력:
채팅 기록 중 곰곰티콘이 사용된 횟수를 출력하시오.
조금 왜 틀렸는지 몰라서 애를 먹었다.
틀린코드:
import sys
n = int(sys.stdin.readline().rstrip())
sets = set()
count = 0
for i in range(n):
name = sys.stdin.readline().rstrip()
if name == "ENTER":
if "ENTER" not in sets:
sets.add(name)
else:
count += len(sets) - 1
sets =set()
else:
sets.add(name)
if "ENTER" in sets:
count += len(sets) -1
else: count += len(sets)
print(count)
처음에는 enter를 들어가면 sets에 담아주고 그 다음에 또 들어오면 비워주는 식으로 했다. 근데 자꾸 틀린다.
정답코드 :
import sys
sys.stdin = open('/Users/song/Desktop/Python/Python/h.txt', 'r')
n = int(sys.stdin.readline().rstrip())
sets = set()
count = 0
for i in range(n):
name = input()
if name == "ENTER":
count += len(sets)
sets.clear()
else:
sets.add(name)
count += len(sets)
print(count)
그러면 enter가 들어오면 SETS에 담긴것들을 넣어주면 어떨까 라고 생각해
반대 방법으로 하기로 했다.
딕셔너리로도 풀 수 있다고 한다.
반응형
댓글