-
프로그래머스 (Level 1) - 로또의 최고 순위와 최저 순위Coding Test/Coding Test 문제 풀이 2021. 12. 26. 00:29
문제 설명
코딩테스트 연습 - 로또의 최고 순위와 최저 순위
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위 당첨 내용 1 6개 번호가 모두 일치 2 5개 번호
programmers.co.kr
풀이
최저 순위를 구하기 위해, 이중 반복문을 통해서 당첨 번호와 일치하는 번호의 수를 카운트했다.
동시에 최대 순위를 구하기 위해 0인 숫자들을 카운트했다.
위에 항목들을 모두 구하면 아래와 같이 계산이 가능하다.
1. 당첨 번호와 일치하는 번호의 수 + 0인 숫자 = 최대로 일치할 수 있는 번호의 수
2. 당첨 번호와 일치하는 번호의 수 = 최소로 일치할 수 있는 번호의 수
위의 계산식을 바탕으로 최대 순위와 최소 순위를 구하면 된다.
전체 소스코드
import java.io.*; import java.util.*; public class Main { public int[] solution(int[] lottos, int[] win_nums) { int correct_count = 0; // 당첨 번호와 일치하는 번호의 수 int zero_count = 0; // 알아볼 수 없는 번호(0)의 수 for (int i = 0; i < lottos.length; i++) { int lotto = lottos[i]; if (lotto == 0) { zero_count++; continue; } for (int j = 0; j < win_nums.length; j++) { if (lotto == win_nums[j]) { correct_count++; } } } int max = 7 - (correct_count + zero_count); if (correct_count + zero_count <= 1) max = 6; int min = 7 - correct_count; if (correct_count <= 1) min = 6; int[] answer = new int[2]; answer[0] = max; answer[1] = min; return answer; } }
코드 간소화
import java.io.*; import java.util.*; public class Main { public int[] solution(int[] lottos, int[] win_nums) { int correct_count = 0; // 당첨 번호와 일치하는 번호의 수 int zero_count = 0; // 알아볼 수 없는 번호(0)의 수 for (int i = 0; i < lottos.length; i++) { int lotto = lottos[i]; if (lotto == 0) { zero_count++; continue; } for (int j = 0; j < win_nums.length; j++) { if (lotto == win_nums[j]) { correct_count++; } } } int max = 7 - (correct_count + zero_count); int min = 7 - correct_count; int[] answer = { Math.min(max, 6), Math.min(min, 6) }; return answer; } }
최대 순위와 최소 순위를 구하는 코드에서 1개 이하의 번호가 일치할 경우 조건문을 이용해서 계산을 하였다. 이때, 조건문으로 계산하는 방식보다 Math.min( ) 함수를 통해서 좀 더 코드를 간소화시킬 수 있는 방법이 있었다.
728x90'Coding Test > Coding Test 문제 풀이' 카테고리의 다른 글
프로그래머스 (Level 1) - 없는 숫자 더하기 (0) 2021.12.26 프로그래머스 (Level 1) - 음양 더하기 (0) 2021.12.26 프로그래머스 (Level 1) - 다트 게임 (0) 2021.12.25 프로그래머스 (Level 1) - 키패드 누르기 (0) 2021.12.24 프로그래머스 (Level 1) - 숫자 문자열과 영단어 (0) 2021.12.24