본문 바로가기

알고리즘 문제풀이/SWEA

3316번 - 동아리실 관리하기(python3)

SWEA 문제 모음: https://swexpertacademy.com/main/code/problem/problemList.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

DP 테이블을 만들고, 비트 연산자를 이용해서 주어진 케이스에 어떤 사람들이 들어가 있는지 체크하면서 경우의 수를 더해가는 방식으로 풀었다.

 

"어떤 사람이 활동을 하는지 안 하는지에 따라 경우의 수를 세어야 한다"라는 말에 맞춰 특정 날짜의 특정 케이스의 경우의 수는 <관리자가 있는지, 전 날 케이스의 참석 인원이 오늘 참석하는지 조건>을 만족하는 모든 케이스 수의 합이 된다.(Line 17) 열쇠는 아무나 가지고 있어도 상관 없으니 전 날 케이스에서 적어도 1명 이상 오늘 케이스에 참여하면 될 것이다.

 

1일차의 경우 A가 무조건 열쇠를 가지고 있으니 이를 고려하여 dp 테이블의 첫 날짜를 채우면 된다.