티스토리 뷰

728x90

문제

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

 

코딩테스트 연습 - 로또의 최고 순위와 최저 순위

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호

programmers.co.kr

 

풀이 및 소스코드

 

로또 번호와 우승 번호를 비교해준다.

몇 개가 같은지 세면서, 0의 갯수도 세어준다.

 

최저 등수란 0으로 된 번호는 모두 우승 번호가 아닐 때이다.

 

최고 등수란 0으로 된 번호는 모두 우승 번호일 때이다.

 

따라서 최저 등수 일 때는 현재 일치하는 숫자의 개수, 최고 등수일 때는 현재 일치하는 숫자의 개수 + 0의 개수

로 구해주면 된다.

class Solution {
    public int[] solution(int[] lottos, int[] win_nums) {
       int correct_cnt = 0;
        int zero_cnt = 0;
		for(int l:lottos) {
			if(l==0) { // 0이면 1등 번호와 같을 수 없으므로 0의 개수를 카운트하는 변수를 +1 해주고 컨티뉴
				zero_cnt++;
				continue;
			}
        	for(int w:win_nums) {
        		if(l==w) {
        			correct_cnt++;
        			break;
        		}
        	}
        }
		
		int[] result = {6, 6, 5, 4, 3, 2, 1};
		// 맞춘 번호가 0개 1개 일때는 6등, 2개: 5등.. 등등
		// 맞춘 번호를 인덱스, 등수를 값으로 초기화
		
		int[] answer = {result[correct_cnt+zero_cnt], result[correct_cnt]};
		
        return answer;
    }
}
반응형