자바 초급문제로 맨땅에 해딩하기

자바 초급문제 13-2. 실패율 도전 2일차.

Jungsoomin :) 2020. 4. 7. 00:18

int[][]타입 배열에 실패율과 해당 스테이지를 담아넣는데 까지는 성공했다.

각 첫번째 인덱스 기준 0이라면 0 - 실패율 , 스테이지 넘버 까지 만들어 진 것이다.

 

이후에는 인터페이스를 구현하여 정렬 메소드를 오버라이딩해서 익명 구현 객체 안에서 해결을 하면 될 듯한데.. 아무리 찾아봐도 메소드의 원리를 이해하기가 쉽지가 않은 것같다...거의 다왔다고 생각했는데 상상도 못한 부분에서 늪에 빠져버렸다. 책에서 오늘 본....오버라이딩과 인터페이스의 생성과 구현을 다루어본다고 생각했는데 숨이 턱- 막히는게 정말 모르겠다는 생각이 들었다...책을 보고 메소드 원리를 더 찾아봐야 접근이 가능할 것 같다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
package _2019KAKAO_BLIND_RECRUITMENT_실패율;
 
import java.util.*;
 
public class subClass01 {
    class Solution {
        public int[] solution(int N, int[] stages) {
            int[] answer = {};
            int[] stageNum = new int[N]; // 스테이지 넘버만큼의 배열 생성
            int failUser = 0;// 실패자
            int challUser = 0;// 도전자
            int hardStage = 0;// 아무도 도달못한 스테이지를 가정한 변수
 
            double[][] stageFailRate = new double[N][1]; // 스테이지 및 실패율을 계산할 2차원 배열
 
            for (int i = 0; i < N; i++) { // 1부터 stageNum 까지 반복되는 for문
 
                stageNum[i] = i + 1;
 
            } // 여기까지하면 stageNum 에 스테이지 넘버가 1부터 넣어질 것임.
 
            Arrays.sort(stages);// 내림차순으로 stages 배열
 
            for (int i = 0; i < stageNum.length; i++) {// stageNum 의 숫자와 stages의 넘버를 비교할 생각
                // for 문이 또 돌기 전에 2차원배열에 스테이지와 실패율을 계산해주어야 한다.
 
                for (int j = 0; j < stages.length; j++) {// stage 넘버를 확인해야함.
                    if (stageNum[i] <= stages[j]) {// 유저의 도달 수가 스테이지보다 같거나 크다면 도전자의 수이다.
                        challUser += 1// 도전자 수 증가
                    }
                    if (stageNum[i] == stages[j]) {// 스테이지기준 유저 도달 수가 같다면 실패자이다.
                        failUser += 1// 실패자 수 증가
                    }
                }
 
                double DoubleFailRate = (double) failUser / (double) challUser;//
 
                stageFailRate[i][0+= DoubleFailRate;// 해당 스테이지에 해당 실패율 대입
                challUser = 0;
                failUser = 0;
                if (challUser == 0 && failUser == 0) { // 아무도 도달 못했을 경우
                    stageFailRate[i][0+= 0;// 해당 스테이지에 실패율 0를 넣는다.
                    challUser = 0;
                    failUser = 0;
                }
            }
            int[][] stageFailRateInt = new int[N][2];// INT 값으로 받아볼 예정임
 
            for (int i = 0; i < stageFailRate.length; i++) {
                stageFailRateInt[i][0= (int) (stageFailRate[i][0* 100);
                stageFailRateInt[i][1= i + 1;
                // System.out.println(stageFailRateInt[i][0]+"/"+stageFailRateInt[i][1]);
                // System.out.println("---------------------"); //정상 출력 확인 스테이지 실패율 INT 배열 확보 함.
            }
 
            // i배열만 오름차순 정리를 해볼까. 그게 되나...stageFailRateInt
 
            return answer;
        }
    }
}
 
cs