[Silver V] 임스와 함께하는 미니게임 - 25757
성능 요약
메모리: 119000 KB, 시간: 152 ms
분류
자료 구조, 해시를 사용한 집합과 맵, 문자열
제출 일자
2024년 9월 5일 16:07:17
문제 설명
임스가 미니게임을 같이할 사람을 찾고 있습니다.
플레이할 미니게임으로는 윷놀이 Y, 같은 그림 찾기 F, 원카드 O가 있습니다. 각각 2, 3, 4 명이서 플레이하는 게임이며 인원수가 부족하면 게임을 시작할 수 없습니다.
사람들이 임스와 같이 플레이하기를 신청한 횟수 N과 임스가 플레이할 게임의 종류가 주어질 때, 최대 몇 번이나 임스와 함께 게임을 플레이할 수 있는지 구하시오.
임스와 여러 번 미니게임을 플레이하고자 하는 사람이 있으나, 임스는 한 번 같이 플레이한 사람과는 다시 플레이하지 않습니다.
임스와 함께 플레이하고자 하는 사람 중 동명이인은 존재하지 않습니다. 임스와 lms0806은 서로 다른 인물입니다.
입력
첫 번째 줄에는 사람들이 임스와 같이 플레이하기를 신청한 횟수 N과 같이 플레이할 게임의 종류가 주어진다. (1≤N≤100,000)
두 번째 줄부터 N개의 줄에는 같이 플레이하고자 하는 사람들의 이름이 문자열로 주어진다. (1≤ 문자열 길이
≤20)
사람들의 이름은 숫자 또는 영문 대소문자로 구성되어 있다.
출력
임스가 최대로 몇 번이나 게임을 플레이할 수 있는지 구하시오.
풀이
같이 플레이할 게임에 따라 인원수가 달라진다 = key-value 가 존재한다... = 딕셔너리를 써보자.
N <= 10 ** 5 이기 때문에 O(N^2) 까지 가능하다. 무리만 하지 않으면 어지간하면 구현이 가능하다.
dict와 set은 어지간하면 O(1)로 동작하기 때문에 이 자료구조들을 활용하면 시간 초과없이 해결이 가능할 것이라고 생각된다.
Y=2, F=3, O=4 인데 임스와 같이 플레이 하기 때문에 -1을 해줘야 한다는 것을 까먹지 말자.
실제로는 Y=1, F=2, O=3 으로 했지만, 헷갈리기 때문에 변수를 하나 더 불러내어 다시 정의해주었다.
N, P = input().split()
N = int(N)
# game : 임스와 같이 게임 하기 때문에 -1 씩 시켜주어야 한다.
game = {"Y" : 2, "F" : 3, "O" : 4}
limit = game[P] - 1
# 한 번 같이 플레이한 사람과는 다시 플레이 하지 않는다. => 중복 제거
players = set()
for _ in range(N) :
players.add(input())
ans = len(players) // limit
print(ans)
'대기업 코테 유형' 카테고리의 다른 글
(백준/파이썬) [Silver IV] 등수 구하기 - 1205 (1) | 2024.09.05 |
---|---|
(백준/파이썬) [Silver IV] 쿠키의 신체 측정 - 20125 (1) | 2024.09.05 |
(백준/파이썬) [Silver V] 비밀번호 발음하기 - 4659 (0) | 2024.09.05 |
(백준/파이썬) [Silver V] 덩치 - 7568 (0) | 2024.09.05 |
(백준/파이썬) [Silver V] 올림픽 - 8979 (0) | 2024.09.04 |