[Java] 프로그래머스 로또의 최고 순위와 최저 순위

2023. 2. 9. 15:15알고리즘

728x90

문제 설명

제한사항

  • lottos는 길이 6인 정수 배열입니다.
  • lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
    • 0은 알아볼 수 없는 숫자를 의미합니다.
    • 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
    • lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
  • win_nums은 길이 6인 정수 배열입니다.
  • win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
    • win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
    • win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.

입출력 예

입출력 예 설명

코드 설명

import java.util.Scanner;

public class Solution {
	public int[] solution(int[] lottos, int[] win_nums) {
        int[] answer = new int[2];
        int[] win = {6, 6, 5, 4, 3, 2, 1}; // 일치하는 번호가 있으면 카운트 늘리면서 win에서 등수 나타내줌.
        // ex) 0,1개 맞으면 6등 2개 5등, 3개 4등, 4개 3등, 5개 2등, 6개 1등.
        int maxCnt = 0; // 제일 높은 등수에서 맞은 개수 저장하기위해
        int minCnt = 0; // 제일 낮은 등수에서 맞은 개수 저장하기위해
        
        for (int i = 0; i < 6; i++) {
        	if (lottos[i] == 0) { // lottos[i] 가 0이면 로또번호를 일치하게 만들 수 있으므로 maxCnt++(제일 낮은 등수 구할땐 0이면 틀리게 계산)
        		maxCnt++;
        	}
        	for (int j = 0; j < 6; j++) {
        		if (lottos[i] == win_nums[j]) { // lottos[i] 가 win_nums[j] 랑 같으면 일치하는 횟수 ++ 해줌
        			maxCnt++;
        			minCnt++;
        		}
        	}
        }
        
        answer[0] = win[maxCnt]; // answer[0]에 제일 높은 등수
        answer[1] = win[minCnt]; // answer[1]에 제일 낮은 등수
        
        return answer;
    }
	public static void main(String[] args) {
		Solution T = new Solution();
		Scanner sc = new Scanner(System.in);
		int[] lottos = new int[6];
		int[] win_nums = new int[6];
		for (int i = 0; i < 6; i++) {
			lottos[i] = sc.nextInt();
		}		
		for (int i = 0; i < 6; i++) {
			win_nums[i] = sc.nextInt();
		}
		for (int x : T.solution(lottos, win_nums)) {
			System.out.println(x + " ");
		}
	}
}
728x90