본문 바로가기
코딩테스트 연습

로또

by 고유빙글 2021. 7. 30.

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

 

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

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

programmers.co.kr

 

로또 번호의 일부를 알 수 없을때, 가능한 최고 순위와 최저 순위를 계산하는 코드를 짜른 방법.

 

static int[] solution(int[] lottos, int[] win_nums) {

		int count1 = 0;
		int count2 = 0;

		for (int i = 0; i < lottos.length; i++) {
			for (int j = 0; j < win_nums.length; j++) {
				if (lottos[i] == 0) {
					count1++;
					break;
				} else if (lottos[i] == win_nums[j]) {
					count1++;
					count2++;
				}
			}
		}

		System.out.println("=======");
		System.out.println(count1);
		System.out.println(count2);
		System.out.println("=======");
		switch (count1) {
		case 6:
			count1 = 1;
			break;
		case 5:
			count1 = 2;
			break;
		case 4:
			count1 = 3;
			break;
		case 3:
			count1 = 4;
			break;
		case 2:
			count1 = 5;
			break;
		case 1:
			count1 = 6;
			break;
		case 0:
			count1 = 6;
			break;
		}

		switch (count2) {
		case 6:
			count2 = 1;
			break;
		case 5:
			count2 = 2;
			break;
		case 4:
			count2 = 3;
			break;
		case 3:
			count2 = 4;
			break;
		case 2:
			count2 = 5;
			break;
		case 1:
			count2 = 6;
			break;
		case 0:
			count2 = 6;
			break;
		}
		
		System.out.println("=======");
		System.out.println(count1);
		System.out.println(count2);
		System.out.println("=======");
		int[] answer = { count1, count2 };

		return answer;
	}

 

난 이렇게 짜보았다. 오랜만에 코딩테스트를 풀어보니 살짝 초반에 막막한 감이 있었으나 다행이 술술 풀어나갈 수 있었다. 그런데... 다른 사람의 풀이를 보니 역시 현타가..ㅠㅠㅠ

 

다른 분들의 코드를 보며 좀 공부를 해봐야겠다.

 

내가 사용한 방법은 간단한 배열을 비용한 비교와, 변수로 카운트를 세 일치하는 갯수를 직접 비교하는 방법이였다. 다른 분 코드를 보니 stream을 사용하는 경우도 있어 이에대한 공부를 하고 자바 쪽 게시판에 글을 작성해봐야겠다.