본문 바로가기

programming/algorithm

[algorithm] 백준 25192 - 인사성 밝은 곰곰이

[algorithm] 백준 25192 - 인사성 밝은 곰곰이

 

안녕하세요. 심심한 코딩쟁이입니다.

 

오늘은 백준 25192번 문제 - 인사성 밝은 곰곰이 의 풀이를 살펴보도록 하겠습니다.

 

풀이에 사용한 언어는 Python3 입니다.

 

문제 해석과 풀이 다 함께 살펴보시죠.

 

algorithm
알고리즘


백준 BAEKJOON 25192

 

백준 25192번 인사성 밝은 곰곰이 문제 보러가기

 

반응형

 

문제 해석

 

문제를 잘 읽어보면 채팅방 로그에 ENTER는 새로운 사람이 입장했음을 의미합니다.

새로운 사람이 입장한 다음 처음으로 채팅을 치는 사람은 무조건 곰곰티콘을 사용하게 되는데

로그를 통해 곰곰티콘의 사용 횟수를 파악하는 것이 문제가 원하는 정답입니다.

힌트 : 중복 제거를 할 때 파이썬에서 주로 사용하는 자료형이 활용해 보죠. 기억 안 나면 옥상으로 집합!!

 

풀이 1 - 입력값 받을 때 input을 사용 4040ms 소요됨

 

# 25192 인사성 밝은 곰곰이

N = int(input())
input()
id_set = set()
total = 0

for _ in range(N-1):
    tmp = input()
    if "ENTER" == tmp:
        total += len(id_set)
        id_set = set()
    else :
        id_set.add(tmp)

total += len(id_set)

print(total)

 

풀이 2 - 입력값 받을 때 sys.stdin.readline 사용 100ms 소요됨

 

# 25192 인사성 밝은 곰곰이

import sys

N = int(sys.stdin.readline())
sys.stdin.readline()
id_set = set()
total = 0

for _ in range(N-1):
    tmp = sys.stdin.readline().rstrip()
    if "ENTER" == tmp:
        total += len(id_set)
        id_set = set()
    else :
        id_set.add(tmp)

total += len(id_set)

print(total)

 

풀이 해석 및 팁

 

입력값 첫 줄에는 로그의 개수, 두 번째 줄에는 ENTER가 무조건 등장합니다.

그 후부터는 ENTER의 등장이 문제 해결의 포인트가 되겠습니다.

만약 ENTER가 더 이상 등장하지 않는다면 단순하게 로그에서 아이디를 받아서 집합에 추가만 시켜주다가

로그의 내용을 모두 살펴봤을 때 집합의 길이를 출력하면 곰곰티콘 사용 횟수가 파악됩니다.

하지만 ENTER가 로그에 등장하게 되면 그때까지의 곰곰티콘 횟수를 total 변수에 더해주고

집합을 다시 초기화하고 이때를 기준으로 처음 나오는 아이디를 체크하기 위해 초기화한 집합에

채팅을 친 아이디를 추가시켜 줍니다.

이 과정을 반복하면서 모든 과정이 끝났을 때 집합의 길이를 total 변수에 더해주면 로그를 통해

모든 채팅 중 곰곰티콘 사용 횟수를 파악할 수 있게 됩니다.

여기까지 백준 25192번 인사성 밝은 곰곰이 문제 풀이였습니다.


이번 문제의 정답률은 53% 정도입니다.

중복 제거라는 과정을 잘 처리할 수 있다면 쉽게 풀 수 있는 문제였습니다.

 

파이썬의 집합은 중복 제거에 아주 유용하기 때문에 공부해 둡시다.

 

[ python 친해지기 #7 ] 파이썬 자료형 5탄 (집합, 불)


제가 작성한 집합에 대한 설명글도 있으니 참고하시면 좋겠네요.

감사합니다.

반응형