jyamethyst21 님의 블로그

백준 25192번- '인사성 밝은 곰곰이' (PYTHON 풀이) 본문

CODING 💻

백준 25192번- '인사성 밝은 곰곰이' (PYTHON 풀이)

jyamethyst21 2025. 11. 2. 17:14

문제:

 

문제는 다음과 같다. ENTER가 입력되면 새로운 사람이 방에 입장하는데 거기에 존재하는 회원은 새로운 사람이 오게 되면 이모티콘으로 인사를 한다. 닉네임이 처음 등장하는 사람은 인사를 해준 것이고 같은 닉네임이 두번 이상 존재하는 경우 한번은 이모티콘으로 인사, 나머지는 그냥 인사이므로 무시하고 이모티콘으로 인사한 횟수만 최종적으로 몇명인지 카운트해서 출력해주면 된다. 설명이 잘 나와있어서 이해하는데에 어렵진 않았다.

 

풀이:

N = int(input())
result = set()
count = 0

for i in range(N):
    a = input()
    if a == 'ENTER':
        result.clear()
    elif a not in result:
        result.add(a)
        count += 1
print(count)

풀이는 다음과 같다. 처음에 리스트랑 set 섞어서 쓰려다 길어지는 것 같아서 set으로만 풀 수 있을 것 같아 다시 고민하면서 풀었다.

리스트에도 여러 메서드가 있는 것처럼 set에도 존재하는데 여기선 clear, add만 활용하였다. clear는 새로운 대화방을 활성화시켜주는 역할을 하고 add는 중복방지를 위해 검사용으로 넣어주었다.

 

여기서 새로운 대화방 활성화란, 예를 들어 'asd', 'qwe, 'ENTER', 'nok' 이런식으로 입력이 들어왔다면 처음 'asd', 'qwe'는 ENTER 이전의 사람이기 때문에 count와 검사를 진행하면 안된다. 그래서 이를 방지하고자 ENTER가 입력되는 시점에 새로운 방을 시작하라는 의미로 기존 내역을 지우는 용도로 clear가 사용된다. 그리고 ENTER가 아닐 경우엔 저장된 set과 입력을 비교하여 존재하지 않으면 set에 추가하고 count를 증가해줌으로써 중복 방지와 횟수 증가를 실행해준다.

 

좀 더 쉽게 풀려고 하면 파이썬은 더 간단해질 수 있는데 자꾸 어렵게 풀려고 하다보니 시간이 오래 걸린다... 훈련이 필요할 것 같다.