-
[프로그래머스 / JAVA] 실패율 (중간에 막힘)코딩/코테준비(JAVA) 2025. 1. 28. 02:01
자바 공부와 코딩테스트 준비를 병행할 겸 자바로 코테 준비를 며칠 전 시작했다.
막히거나 틀린 부분이 있더라도, 그냥 그대로 내가 스스로 작성한 부분들을 기록해 두려고 한다.
정답 코드가 아니다. 그냥 미래의 복기용으로 나를 위해 적어둔 기록이다.
(이 사람은 어떻게 실패했는지 살펴보는 용도로도 적합할 것 같다.)
이번 코드는 (실패율 기준 내림차순 + 동일 실패율의 경우 작은번호 우선) 이 부분을 구현하지 못해 다 작성하지 못했다.
HashMap을 써서 key를 스테이지 번호, value를 실패율로 두고 value를 기준으로 내림차순 정렬을 먼저 하고, key를 기준으로는 오름차순 정렬을 하면 어떨까..라는 생각을 해보다가, 'hashMap은 근데 파이썬의 dictionary처럼 순서라는 게 없지 않을까' 라는 생각이 스쳐가면서 HashMap이 정렬이 될까라는 생각이 들었고, 무엇보다 정렬 구현을 어떻게 해야 하는지 몰라서 중단했다.
import java.util.Arrays; import java.util.HashMap; class Solution { public int[] solution(int N, int[] stages) { int peopleCnt = stages.length; //각 스테이지에 도달했으나 아직 클리어하지 못한 플레이어의 수 구하기 int[] trials = new int[N+2]; //1번 인덱스부터 사용 for (int i = 0; i < peopleCnt; i++) { trials[stages[i]]++; } System.out.println(Arrays.toString(trials)); //스테이지에 도달한 플레이어 수 구하기(누적) int[] clears = new int[N+1]; //1번 인덱스부터 사용 for (int i = 1; i <= N; i++) { //각 스테이지 도달 for (int j = i; j <= N + 1; j++) { clears[i] += trials[j]; } } System.out.println(Arrays.toString(clears)); //각 스테이지 실패율 구하기 double[] failRates = new double[N+1]; //1번 인덱스부터 사용 for (int i = 1; i <= N; i++) { if(clears[i] == 0) { failRates[i] = 0; } else { failRates[i] = (double)trials[i] / clears[i]; } } System.out.println(Arrays.toString(failRates)); //실패율이 높은 스테이지부터 내림차순으로 저장하기 -> 이 부분 구현 실패함.(실패율 기준 내림차순 + 동일 실패율의 경우 작은번호 우선) HashMap<Integer, Double> stageAndRate = new HashMap<>(); for(int i = 1; i <= N; i++) { stageAndRate.put(i, failRates[i]); } System.out.println(stageAndRate); int[] answer = {}; return answer; } }
앞으로 꾸준히 해서 이런 문제 술술 풀자.
https://school.programmers.co.kr/learn/courses/30/lessons/42889
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
'코딩 > 코테준비(JAVA)' 카테고리의 다른 글
[프로그래머스 / JAVA] 크레인 인형뽑기 게임 (정답 풀이) (0) 2025.02.06 [프로그래머스 / JAVA] 주식 가격 (정답 풀이) (1) 2025.02.02 [프로그래머스 / JAVA] 짝지어 제거하기 (정답 코드) (0) 2025.02.01 [프로그래머스 / JAVA] 올바른 괄호 (정답 코드) (1) 2025.01.31 [프로그래머스 / JAVA] 방문 길이 (잘못된 풀이) (0) 2025.01.31