알고리즘 공부 및 문제 풀이/프로그래머스(PRO)
[pro] 프로그래머스 level2 152996 시소 짝꿍 (Java) - 구현
yoonjiy
2023. 2. 27. 23:19
[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/152996
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
[풀이]
오름차순 정렬을 했기 때문에 무게가 같은 경우와 (*4,*3), (*3, *2), (*4, *2) 경우에 대해서만 체크해준다. 또한 같은 무게인 경우 앞서 구한 count에서 1을 뺀 값을 그대로 활용할 수 있다. 시간초과가 나지 않기 위해서 필수적인 부분!
[코드]
import java.util.*;
class Solution {
public long solution(int[] weights) {
long answer = 0;
// 시소 짝꿍이 몇 쌍 존재하는지 구하여 return
Arrays.sort(weights);
int count = 0;
for(int i=0; i<weights.length-1; i++){
if(i>0){
if(weights[i]==weights[i-1]){
count--;
answer += count;
continue;
}
}
count = 0;
for(int j=i+1; j<weights.length; j++){
if(weights[i]==weights[j] ||
weights[i]*4==weights[j]*3 ||
weights[i]*3==weights[j]*2 ||
weights[i]*2==weights[j] ) {
count++;
}
}
answer += count;
}
return answer;
}
}