-
[프로그래머스] 위클리 챌린지 6주차ALGORITHM/PROGRAMMERS 2021. 9. 6. 17:10
https://programmers.co.kr/learn/courses/30/lessons/85002
2021-09-06
1234567891011121314151617181920212223242526272829303132333435363738394041import java.util.*;class Solution {public int[] solution(int[] weights, String[] head2head) {int[] answer = new int[weights.length];double[][] arr = new double[weights.length][4];for(int i = 0; i < head2head.length; i++) {int cnt = 0;int wgt = 0;int tot = 0;for(int j = 0; j < head2head[i].length(); j++) {if(i == j || head2head[i].charAt(j) == 'N') continue;if(head2head[i].charAt(j) == 'W') {cnt++;if(weights[i] < weights[j]) wgt++;}tot++;}arr[i][0] = i; // 번호arr[i][1] = weights[i]; // 무게arr[i][2] = (tot == 0) ? 0 : cnt/(double)tot; // 승률arr[i][3] = wgt; // 무거운 복서를 이긴 횟수}Arrays.sort(arr, new Comparator<double[]>() {@Overridepublic int compare(double[] o1, double[] o2) {if(o1[2] == o2[2]) {if(o1[3] == o2[3]) {if(o1[1] == o2[1]) {return Double.compare(o1[0], o2[0]);} return Double.compare(o2[1], o1[1]);} return Double.compare(o2[3], o1[3]);}return Double.compare(o2[2] , o1[2]);}});for(int i = 0; i < arr.length; i++) answer[i] = (int) arr[i][0]+1;return answer;}}cs #문제풀이
arr[weights.length][4] 배열을 만들고,
각 index의 [0]은 번호, [1]은 무게, [2]는 승률, [3]은 자신보다 무거운 복서를 이긴 횟수를 넣어서 정렬했다.
맨 처음에 제출했을 때 몇 개 틀렸는데, 승률 계산을 잘못해서였다.. N은 포함하면 안된다;;
'ALGORITHM > PROGRAMMERS' 카테고리의 다른 글
[프로그래머스] 야근 지수 (0) 2021.09.06 [프로그래머스] 여행경로 (0) 2021.09.06 [프로그래머스] 하노이의 탑 (0) 2021.09.06 [프로그래머스] N-Queen (0) 2021.09.06 [프로그래머스] 가장 긴 팰린드롬 (0) 2021.09.01