문제 : 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을 사용하는 경우도 있어 이에대한 공부를 하고 자바 쪽 게시판에 글을 작성해봐야겠다.
'코딩테스트 연습' 카테고리의 다른 글
키패드에서 왼손엄지와 오른손엄지중 어느 것으로 누를지 (0) | 2021.08.19 |
---|---|
문자열 영어로 변환된 것을 오로지 숫자로 변환 (0) | 2021.08.19 |
코딩테스트 - 모의고사 (레벨 1) (0) | 2021.05.02 |
코딩테스트 - 신규 아이디 추천 (0) | 2021.05.02 |
코딩테스트 - 완주하지 못한 선수 (0) | 2021.05.02 |