요르딩딩

프로그래머스 : 실패율 본문

[코딩테스트]/문제풀이

프로그래머스 : 실패율

요르딩딩 2022. 4. 25. 14:29
728x90
반응형
class Solution {
	static int[] stay, tot;

	public int[] solution(int N, int[] stages) {
		int[] answer = new int[N];

		// 초기화
		stay = new int[N + 2]; //모두 다 클리어한 경우 N+2
		tot  = new int[N + 2];

		for (int i = 0; i < stages.length; i++) {
			int value = stages[i];
			stay[value]++;
			for (int j = 1; j <= value; j++) {
				tot[j]++;
			}
		}

		List<double[]> list = new ArrayList<>();
		for (int i = 1; i < tot.length - 1; i++) { //0,마지막번쨰 버리기
			double value = 0;
			if(tot[i] != 0) {
				value =  ((double) stay[i] / (double) tot[i]);	
			}
			
			list.add(new double[] { i, value }); //*****
		}

		Collections.sort(list, new Comparator<double[]>() { // ***********
			@Override
			public int compare(double[] a, double[] b) {
				return Double.valueOf(b[1]).compareTo(Double.valueOf(a[1])); //*****
			}
		});

		for (int i = 0; i < list.size(); i++) {
			double[] a = ((double[]) list.get(i));
			answer[i] = (int) a[0];
		}

		return answer;

	}
//	TreeMap<Integer, Object> map = new TreeMap<>(Collections.reverseOrder());
//	for (int i = 1; i < tot.length; i++) {
//		if (i != N + 1) {
//			map.put((int) ((double) stay[i] / (double) tot[i] * 100), i);
//		}
//	}
//	ArrayList<Integer> arrList = new ArrayList<Integer>();
//	for (Entry<Integer, Object> a : map.entrySet()) { //***********
//		arrList.add((Integer) a.getValue());
//	}
//	answer = arrList.stream().mapToInt(i -> i).toArray(); //***********

//	Arrays.sort(tot, Collections.reverseOrder()); // 역순
//	answer = Arrays.stream(tot).mapToInt(i -> i).toArray(); // Integer[] -> int[] //***********
}
728x90
반응형
Comments