[파이썬/python] 백준 11578 - 팀원 모집

2024. 9. 7. 21:56·알고리즘
반응형

문제

https://www.acmicpc.net/problem/11578


문제 설명

  1. 모든 문제를 풀 수 있는 팀을 만들어야 한다.
  2. 팀원의 수가 많을수록 상금이 적어지기 때문에 최소한의 팀원으로 우승해야 한다.

풀이

각각의 팀원들을 묶어가며 해당 팀원들로 모든 문제를 풀 수 있는지 확인하는 문제이다.
브루트포스를 통해 하나씩 비교해가며 풀 수 있다. 하지만 각각의 문제를 하나의 비트라고 생각하고 모든 비트가 채워졌을 때 우승할 수 있다고 생각하여 비트마스킹을 이용했다.

 

  1. 각 학생이 풀 수 있는 문제를 비트 처리하여 students 배열에 넣는다.
  2. students 배열의 학생들을 조합을 이용하여 해당 조합이 우승이 가능한 지 확인한다.
  3. 인원이 적은 순으로 확인하기 때문에 가장 먼저나온 조합이 최소한의 팀원이므로 팀원 수를 반환한다.

코드

import sys
from itertools import combinations
input = sys.stdin.readline

N,M = map(int,input().split())
students = []
is_win = 0
for i in range(N):
    is_win |= (1 << i)
res = -1


for _ in range(M):
    student = 0
    for p in list(map(int,input().split()))[1:]:
        student |= (1 << p-1)
    students.append(student)

def cal():
    for i in range(1, M+1):
        for cur_student in combinations(students,i):
            tmp_st = 0
            for st in cur_student: 
                tmp_st |= st
            if tmp_st == is_win:
                return i
    return -1

print(cal())

시간복잡도

  • 조합의 경우의 수를 모두 구한다. -> $O(2^m)$
  • 학생 조합을 비트 처리 한다. -> $O(1)$
  • m이 10일 때 최악, 약 $O(1024)$의 시간이 걸린다.

 

반응형

'알고리즘' 카테고리의 다른 글

[파이썬/python] 백준 14627- 파닭파닭  (0) 2024.09.07
[파이썬/python] 백준 17129 - 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유  (0) 2024.09.07
[파이썬/python] 백준 16493 - 최대 페이지 수  (0) 2024.09.07
[파이썬/python] 백준 28215 - 대피소  (0) 2024.09.07
[파이썬/python] 백준 14646 - 욱제는 결정장애야!!  (3) 2024.09.07
'알고리즘' 카테고리의 다른 글
  • [파이썬/python] 백준 14627- 파닭파닭
  • [파이썬/python] 백준 17129 - 윌리암슨수액빨이딱따구리가 정보섬에 올라온 이유
  • [파이썬/python] 백준 16493 - 최대 페이지 수
  • [파이썬/python] 백준 28215 - 대피소
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (144)
      • 알고리즘 (124)
      • Java (2)
      • 자기개발 (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    인프런
    SMTP
    백준
    python
    Redis
    컴퓨터 구조
    springboot
    알고리즘
    completablefuture
    async
    파이썬
    작심삼일 챌린지
    OS
    java
    컴퓨터구조
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
[파이썬/python] 백준 11578 - 팀원 모집
상단으로

티스토리툴바