무게에 따른 사람의 수를 모두 저장해준다음 그 벡터를 순회하면서
같은 무게가 있으면 어디에 앉든 균형을 이루기 때문에 조합으로 수를 구해주고
2 3 4 m 자리가 있어서 나올 수 있는 비율은 2:3 2:4=1:2 3:4 가 있기 때문에
이 에 맞는 값이 있다면 경우의 수 를 추가해주면 된다.
#include <string>
#include <vector>
using namespace std;
long long solution(vector<int> weights) {
long long answer = 0;
vector<long long> cnt(1001, 0); //몸무게 별 사람수
for (int i = 0; i < weights.size(); i++) {
cnt[weights[i]]++;
}
//나올수 있는 비율 2:3 2:4=1:2 3:4
for (int i = 0; i < weights.size(); i++) {
if (weights[i] % 2 == 0) { //2:3
long long base = (weights[i] / 2) * 3;
if (base <= 1000) answer += cnt[base];
}
if (weights[i] % 3 == 0) { //3:4
long long base = (weights[i] / 3) * 4;
if (base <= 1000) answer += cnt[base];
}
long long base = weights[i] * 2;
if (base <= 1000) answer += cnt[base];
}
for (int i = 100; i <= 1000; i++) {
if (cnt[i] >= 2)
answer += (long long)(cnt[i] * (cnt[i] - 1)) / 2; //같을 때
}
return answer;
}
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스][LV.2][C++]가장 큰 정사각형 찾기 (0) | 2024.05.06 |
---|---|
[프로그래머스][LV0.][C++]겹치는 선분의 길이 & 안전지대 (4) | 2024.05.01 |
[프로그래머스][LV 1][C++] [PCCE 기출문제] 10번 / 데이터 분석 (1) | 2024.03.07 |
[프로그래머스][LV 1][C++][PCCE 기출문제] 9번 / 이웃한 칸 (0) | 2024.03.06 |
[프로그래머스][LV 1][C++] 완주하지 못한 선수 (0) | 2024.03.06 |