📍 문제 설명
💡 접근
예제는 그렇게 안나왔지만 공포도가 낮은 모험가를 기준으로 모험을 보낼 수 있도록 한다.
모험가를 확인하면서 그룹에 포함된 모험가 수를 하나씩 증가시켜줌
★★그룹에 포함된 모험가의 수 >= 해당 모험가의 공포도 이면 하나의 그룹으로 만들 수 있다.
그룹으로 만들었으면 그룹에 포험된 모험가의 수를 다시 0으로 지정해놓고 다시 반복한다.
👩💻 코드
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner kb = new Scanner(System.in);
int n = kb.nextInt();
int[] arr = new int[n];
for(int i = 0; i < n; i++) {
arr[i] = kb.nextInt();
}
Arrays.sort(arr);
//여행을 떠날 수 있는 모험가 그룹 수
int answer = 0;
//그룹에 포함된 모험가 수
int count = 0;
//1 , 22 , 끝
//공포도가 1 일땐 1명의 그룹을 만들어라. [2,2,2,3]
//공포도가 2 일땐 2명의 그룹을 만들어라. [2,3]
for(int i = 0; i < n; i++) {
//모험가 수를 추가
count++;
//count = 1 , arr[0] = 1 (o)
//count = 1 , arr[1] = 2 (x)
//count = 2 , arr[2] = 2 (o)
//count = 1 , arr[3] = 2 (x)
//count = 2 , arr[4] = 3 (x)
//그룹으로 만들 수 있을 때
if(count >= arr[i]) {
answer++;
count = 0;
}
}
System.out.println(answer);
}
}
'Algorithm > 이코테' 카테고리의 다른 글
3.문자열 뒤집기 (0) | 2021.12.10 |
---|---|
2.곱하기 혹은 더하기 (0) | 2021.12.10 |
효율적인 화폐 구성 (0) | 2021.11.25 |
바닥 공사 (0) | 2021.11.25 |
1로 만들기 (0) | 2021.11.25 |