개발/코딩

[프로그래밍] 프로그래머스 예제문제 풀어보기 <로또의 최고 순위와 최저 순위> (성공)

mabb 2022. 3. 13. 18:56
반응형

 프로그래머스 기본 언어설정이 C로 되어있는 줄 모르고
malloc, int* 등의 문법이 본인이 모르는 새로운 자바 문법인 줄 알고 구글링을 해보았음.
덕분에 동적할당, 정적할당이라는 개념을 알게됨.

동적할당: 힙에 메모리를 할당하는것
정적할당: 스택에 메모리를 할당하는것

C언어는 메모리를 할당하는 것까지도 일일이 설정을 해주어야하는가 보다.

 

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
class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        
        int knowWin = 0;
        int unKnownCount = 0;
        int guessBest = 0;
        int guessWorst =0;
        
        for(int number:lottos){
            if (number ==0){
                unKnownCount ++;
                continue;
            }
        
            for(int winNumber:win_nums){
                if(number==winNumber){
                    knowWin++;
                }      
            }
        }
        guessBest = knowWin + unKnownCount;
        guessWorst = knowWin; 
        
        answer[0= getRank(guessBest);
        answer[1= getRank(guessWorst);
            
             
        return answer;
    }
    
    public int getRank(int guess){
        switch(guess){
            case 0:
                guess = 6;
                break;
            case 1:
                guess = 6;
                break;
            case 2:
                guess = 5;
                break;
            case 3:
                guess = 4;
                break;
            case 4:
                guess = 3;
                break;
            case 5:
                guess = 2;
                break;
            case 6:
                guess = 1;
                break;
          
         
        }   
           return guess;  
    }
    
    
}
cs

1-62: 솔루션 클래스
2-30: lottos int배열과 win_nums int배열을 인자로 받고 answer int배열을 반환하는 솔루션메서드
3:  answer int배열의 크기를 2로 설정한다. {최고등수, 최저등수}
5: 아는 번호가 맞았을 경우를 카운팅하기 위한 knowWin int변수를 선언한다.
6: 모르는 번호의 갯수를 카운팅하기위한 unKnownCount int변수를 선언한다.
7: 최고로 많이 맞은 갯수를 담을 guessBest int 변수를 선언한다.
8: 최고로 못 맞은 갯수를 담을 guessWorst int 변수를 선언한다.
10-21: lottos의 값들을 number에 담아 반복하는 for문
11-14: number가 0일 경우 unKnownCount를 1더하고 continue하여 10행으로 돌아간다.
16-20: win_number을 winNumber에 담는 for문
17-19: number와 winNumber가 같을 경우 knowWin을 +1 해준다.
22: 최고점수는 unKnownCount가 다 맞은 경우
23: 최저점수는 unKnownCount가 다 틀린 경우
25: answer에 guessBest를 파라미터로 getRank메서드를 리턴받음
26: answer에 guessWorst를 파라미터로 getRank메서드를 리턴받음
29: answer를 반환한다.
32-59:  int변수를 받아서 int변수를 반환하는 getRank메서드. 로또 등수를 switch_case문을 이용하여 구하고 guess에 바인딩하여 반환한다.

반응형