[문제]
https://school.programmers.co.kr/learn/courses/30/lessons/152996
[풀이]
오름차순 정렬을 했기 때문에 무게가 같은 경우와 (*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;
}
}
'알고리즘 공부 및 문제 풀이 > 프로그래머스(PRO)' 카테고리의 다른 글
[pro] 프로그래머스 level2 142085 디펜스 게임 (Java) - 시뮬레이션 (0) | 2023.03.02 |
---|---|
[pro] 프로그래머스 level2 148653 마법의 엘리베이터 (Java) - 시뮬레이션 (0) | 2023.03.01 |
[pro] 프로그래머스 level2 154538 숫자 변환하기 (Java) - DP (0) | 2023.02.21 |
[pro] 프로그래머스 level2 154539 뒤에 있는 큰 수 찾기 (Java) - 스택 (0) | 2023.02.21 |
[pro] 프로그래머스 level2 154540 무인도 여행 (Java) - BFS (0) | 2023.02.20 |