본문 바로가기
백준알고리즘/심화

(Python/🥈4)백준 알고리즘 25192번 :인사성 밝은 곰곰이

by windy7271 2023. 6. 11.
728x90
반응형

https://www.acmicpc.net/problem/25192
백준 알고리즘 인사성 밝은 곰곰이

문제:

 

알고리즘 입문방 오픈 채팅방에서는 새로운 분들이 입장을 할 때마다 곰곰티콘을 사용해 인사를 한다. 이를 본 문자열 킬러 임스는 채팅방의 기록을 수집해 그 중 곰곰티콘이 사용된 횟수를 구해 보기로 했다.

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에 담긴것들을 넣어주면 어떨까 라고 생각해

반대 방법으로 하기로 했다.

 

딕셔너리로도 풀 수 있다고 한다.

 

 

반응형

댓글