컴공생의 다이어리

모험가 길드 본문

Development/Algorithm & Coding Test

모험가 길드

컴공 K 2020. 12. 18. 17:30

한 마을에 모험가가 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

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 - 교보문고

IT 취준생이라면 누구나 가고 싶어 하는 카카오, 라인, 삼성전자의 2016년부터 2020년까지의 코딩 테스트와 알고리즘 대회의 기출문제를 엄선하여 수록하였다. 최근 5년간의 코딩 테스트 기출문제

www.kyobobook.co.kr

 

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