[ Programmers ] 2021 Dev-Matching : 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 (Java)

1. Problem 📃

[ 2021 Dev-Matching : 웹 백엔드 개발자(상반기) - 로또의 최고 순위와 최저 순위 ]

https://programmers.co.kr/learn/courses/30/lessons/77484



2. Constraint 🔗


3. Solution 🔑

  1. 등수를 먹이는 rank라는 배열을 초기화 해준다. 인덱스는 맞춘 개수, 요소는 등수를 나타내도록 {6, 5, 4, 3, 2, 1}로 초기화했다.
  2. 맞춘 개수를 나타내는 fit변수, 모르는 번호를 나타내는 0의 개수를 나타내는 countZero또한 선언.
  3. lottos의 로또 번호가 모로는 번호(0)가 아니고 win_nums의 당첨 번호와 일치 한다면 맞은 개수 fit을 증가(++) 시키고 break, 0이라면 countZero를 증가(++).
  4. answer 배열의 첫번째 인덱스에는 최대 등수를, 두번째 인덱스에는 최소 등수를 적어야하므로 첫번째와 두번째에 맞춘 fit값을 대입하여준다. 그리고 최대 등수(첫번째 칸)에는 countZero(0은 어떤 수든 될 수 있으므로 countZero만큼 더 맞았다고 할 수 있음.)를 더해준다.
  5. answer의 길이 만큼 for문을 돌려 그 안에 rank의 길이 만큼 이중 for문을 돌린다.
    이때, 맞은 개수랑 같은 인덱스의 요소를 본인 answer 배열 칸의 값으로 수정하여주고 0은 rank에 없으므로 따로 if문으로 처리해준다. 그 후 answer값을 리턴.
맞은 개수(인덱스)0개1개2개3개4개5개6개
등 수6654321

4. Code 💻

import java.util.ArrayList;

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int[] rank = {6, 5, 4, 3, 2, 1};
        int fit = 0;
        int countZero = 0;
        
        ArrayList<Integer> noneFit = new ArrayList<Integer>();
        
        for(int n : lottos) {
        	if(n != 0) {
        		for(int i=0; i<win_nums.length; i++) {
				if(n == win_nums[i]) {
					fit++;
					break;
				}
			}
        		noneFit.add(n);
        	}
        	else {
        		countZero++;
        	}

        }
        answer[0] = countZero + fit;
        answer[1] = fit;
        
        for(int i=0; i<answer.length; i++) {
        	for(int j=0; j<rank.length; j++) {
        		if(answer[i] == rank[j]) {
        			answer[i] = j+1;
        			break;
        		}
        		else if(answer[i] == 0) {
    				answer[i] = 6;
    			}
        	}
        }
        return answer;
    }
}

5. Growth 🍄

로또 1등으로 생활 수준 성장하고 싶다 🙏🏻

좋은 웹페이지 즐겨찾기