모험가 길드

 사용자로부터 모험가의 명수와 각 모험가의 공포도를 입력 받는다.

우리는 이 모험가들로 그룹을 나누어 던전을 입장하려 한다.

하지만 모험가의 공포도를 고려하여 해당 모험가의 공포도 만큼 인원수를 구성하여 그룹을 만들어야 한다.

만약 공포도가 3인 모험가가 있다면 그 그룹에는 3명의 모험가가 필요하다.

하지만 모든 모험가가 그룹에 속할 필요는 없다. 마을을 지킬 인원이나 식사 추진을 할 인원도 필요하다.

이 때, 입력받은 데이터를 토대로 최대로 만들 수 있는 그룹의 숫자는 몇 개일까


만약 모험가의 명수는 5이며, 각 모험가의 공포도는 2 3 1 2 2 라면

3 2 2

1 2

두 그룹으로 나누어 모험을 떠날 수 있다.


이를 구현하기 위한 기본적인 아이디어는 다음과 같다.


1. while문을 돌며 현재 리스트의 원소들로 그룹핑이 가능한지 검사한다

2. 만약 가능하다면 리스트의 첫번째 원소를 확인하고 그 값만큼 for문을 반복한다.

3. for문 안에서는 리스트의 원소를 Pop연산을 통해 제거한다.

4. for문의 작동이 종료되면 그룹의 갯수가 증가하였다는 의미로 count 변수를 1 증가시킨다.


파이썬을 통한 구현



댓글

댓글 쓰기