반응형
1. 문제
A, B 두 사람이 볼링을 치고 있습니다. 볼링공의 갯수 N이 주어지고, 볼링공의 무게는 1부터 M까지의 자연수 형태로 존재 합니다. 이때 M이 주어지고, 각각의 무게가 차례대로 주어졌을 때, 두 사람이 고를수 있는 볼링공의 조합의 갯수를 구하시오. 각 볼링공은 무게가 같아도 고유의 번호를 가지고 있습니다. 두 사람은 서로 무게가 다른 공을 고르려고 합니다. 첫째줄은 N과 M이 순서대로 공백을 기준으로 주어지고, 둘째줄에는 볼링공의 무게가 주어집니다.
2. 입력
5 3
1 3 2 3 2
3. 출력
8
4. 접근
1. 볼링공의 무게 별로 개수를 합쳐 집게 합니다.
2. 볼링공의 최소 무게인 1부터 최대 무게 M 까지 반복문을 돌면서
3. (무게가 i 인 볼링공의 개수) * (무게가 i 인 볼링공의 개수를 제외한 나머지 볼링공의 개수)
4. 위 곱한값을 반복문이 끝날때 까지 합친후 반환 합니다.
5. Java 소스 코드
public class Page315 {
//볼링공 고르기
// N개의 볼링고이 주어지고
// M까지의 볼링공 무게가 존재 할때
public static void main(String[] args) {
int N = 5;
int M = 3;
int[] weights = new int[]{1, 3, 2, 3, 2};
System.out.print(new Page315().solution(N, M, weights));
}
public int solution(int N, int M, int[] weights) {
// 볼링공의 최대 무게는 10 입니다.
int[] total = new int[11];
int result = 0;
// 각 무게에 해당하는 볼링공의 개수 카운트
for (int i = 0; i < N; i++) {
total[weights[i]] += 1;
}
// Arrays.stream(weights).forEach(weight -> total[weight] += 1);
// 1부터 M 까지의 각 무게에 대해서 처리
for (int i = 1; i < M + 1; i++) {
N -= total[i];
result += total[i] * N;
}
return result;
}
}
반응형
'Algorithm' 카테고리의 다른 글
고정점 찾기 - 이것이 코딩 테스트다 with java (0) | 2020.09.24 |
---|---|
경쟁적 전염 - 백준 18405 번 (0) | 2020.09.24 |
만들 수 없는 금액 (0) | 2020.09.23 |
에라토스테네스의 체(Sieve of Eratosthenes) (0) | 2020.09.23 |
소수의 판별 (0) | 2020.09.23 |