[BOJ 26069] - 붙임성 좋은 총총이 (구현, Python)

vkdldjvkdnj·2022년 12월 1일
0

BOJ

목록 보기
80/92

제2회 곰곰컵 풀이

A - 치킨댄스를 추는 곰곰이를 본 임스 2 풀이
B - 붙임성 좋은 총총이 풀이
C - 곰곰이와 학식 풀이
D - 오락실에 간 총총이 풀이
E - 곰곰이와 시소 풀이
F - 외로운 곰곰이는 친구가 있어요 풀이
G - 곰곰이와 테트리스 풀이
H - 곰곰아 선 넘지마 풀이
I - 곰곰이의 식단 관리 2 풀이
J - 서커스 나이트 풀이

BOJ 26069 - 붙임성 좋은 총총이 링크
(2022.12.01 기준 S4)

문제

ChongChong은 처음부터 무지개 댄스를 추고 있고, 무지개 댄스를 추는 사람을 만나면 무조건 추게 된다. 사람들이 만난 N개의 기록이 주어진다면 마지막 기록 이후 무지개 댄스를 추는 사람이 몇 명인지 출력

알고리즘

해시와 맵을 이용해 구현해야 한다.

풀이

파이썬에는 collections 모듈에 defaultdict 함수가 있다. 이는 모든 해시에 대해 디폴트값을 지정해주는 함수이다.

defaultdict(bool)로 지정해보자. 그러면 모든 해시에 대해 디폴트 값은 False가 된다.
무지개 댄스를 처음부터 추던 ChongChong 의 값만 True로 바꿔주자. 물론, 무지개 댄스를 추는 사람은 1명부터 시작해야 한다.

from collections import defaultdict
dance = defaultdict(bool)
dance['ChongChong'] = True
answer = 1

이제 기록을 차례대로 입력받자.
두 사람 중 한 사람만 추고 있다면 나머지 사람은 추게 되므로 이를 구현하면 된다.

코드

import sys; input = sys.stdin.readline
from collections import defaultdict

# 총총이는 처음부터 무지개 댄스를 추고 있다.
dance = defaultdict(bool)
dance['ChongChong'] = True
answer = 1

for _ in range(int(input())):
    # A와 B가 만났다.
    A, B = input().split()
    # 두 사람 중 한 사람만 추고 있다면
    # 추고 있지 않은 사람을 추게 만들면 된다.
    if dance[A]:
        if not dance[B]:
            dance[B] = True
            answer += 1
    elif dance[B]:
        dance[A] = True
        answer += 1

print(answer)
profile
GNU 16 statistics & computer science

0개의 댓글