컴공생의 다이어리
모험가 길드 본문
한 마을에 모험가가 N명이 있고 모험가를 대상으로 공포도를 측정했다. 공포도가 X인 모험가는 반드시 X명 이상으로 구성한 모험가 그룹에 참여해야 여행을 떠날 수 있다는 규정이 있다. 길드장은 최대 몇 개의 모험가 그룹을 만들 수 있는지 궁금해한다.
질문
길드장을 위해 N명의 모험가에 대한 정보가 주어졌을 때, 여행을 떠날 수 있는 그룹 수의 최대값을 구하는 프로그램을 작성하시오. 단, 몇 명의 모험가는 마을에 그대로 남아 있어도 되기 때문에, 모든 모험가를 특정한 그룹에 넣을 필요는 없다.
구현한 코드
아래는 파이썬으로 구현한 코드이다.
n = int(input())
data = list(map(int, input().split()))
data.sort()
result = 0 # 총 그룹의 수
count = 0 # 현재 그룹에 포함된 모험가의 수
for i in data:
count += 1 # 현재 그룹에 해당 모험가를 포함시키기
if count >= i: # 현재 그룹에 포함된 모험가의 수가 현재의 공포도 이상이라면, 그룹 결성
result += 1 # 총 그룹의 수 증가시키기
count = 0 # 현재 그룹에 포함된 모험가의 수 초기화
print(result)
아래는 c/c++으로 구현한 코드이다.
#include<iostream>
#include<algorithm>
int main() {
int n;
int result = 0; //총 그룹의 수
int count = 0; //현재 그룹에 포함된 모험가의 수
std::cin >> n;
int* data = new int[n] {0, };
for (int i = 0; i < n; i++) {
std::cin >> data[i];
}
std::sort(data, data + n);
for (int i = 0; i < n; i++) {
count += 1;
if (count >= i) {
result += 1;
count = 0;
}
}
std::cout << result;
return 0;
}
www.kyobobook.co.kr/product/detailViewKor.laf?mallGb=KOR&ejkGb=KOR&barcode=9791162243077
728x90
'Development > Algorithm & Coding Test' 카테고리의 다른 글
문자열 뒤집기 (0) | 2020.12.18 |
---|---|
곱하기 혹은 더하기 (0) | 2020.12.18 |
1이 될 때까지 (0) | 2020.12.17 |
숫자 카드 게임 (0) | 2020.12.17 |
큰 수의 법칙 (0) | 2020.12.17 |
Comments