https://programmers.co.kr/learn/courses/30/lessons/77484
[풀이 과정]
민우가 로또를 구매했다. 민우의 동생이 로또에 낙서를 하여 일부 번호가 알아 볼 수 없게 되어 0으로 표기하기로 하였다. 민우의 로또 번호를 가지고 당첨 로또 번호를 맞춰 순위를 매기는 문제이다.
이때 최고 순위와 최저 순위를 찾아야한다.
최고 순위를 구하고 싶다면 0의 개수 를 맞은 로또번호의 개수로 세어준다. (맞은개수+0의 개수) 를 가지고 순위를 정한다.
최저 순위는 그냥 맞은개수를 가지고 를 가지고 순위를 정한다.
따라서 0의 개수와 민우의 로또 번호와 당첨된 로또번호의 맞은 번호의 개수를 구하면 된다!
public int[] solution(int[] lottos, int[] win_nums) {
int zero_count=0; //0의 개수
int same_count=0; //맞은 개수
int min_rank,max_rank; //최고등수 ,최저 등수
for(int i = 0 ; i <lottos.length;i++){
//0의 개수를 세어준다.
if(lottos[i]==0){
zero_count++;
}
//당첨 번호와 같은 번호의 개수를 세어준다.
for (int j = 0 ; j <win_nums.length;j++){
if(lottos[i]==win_nums[j]){
same_count++;
}
}
}
min_rank = rank(same_count+zero_count);
max_rank = rank(same_count);
return new int []{min_rank,max_rank};
}
switch - case 문을 이용하여 맞은 개수에 따른 순위를 return 시켜준다.
public int rank(int n){
//n은 맞은 개수
switch(n){
case 6:
return 1;
case 5:
return 2;
case 4:
return 3;
case 3:
return 4;
case 2:
return 5;
default :
return 6;
}
}
[코드]
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int zero_count=0; //0의 개수
int same_count=0; //맞은 개수
int min_rank,max_rank; //최고등수 ,최저 등수
for(int i = 0 ; i <lottos.length;i++){
//0의 개수를 세어준다.
if(lottos[i]==0){
zero_count++;
}
//당첨 번호와 같은 번호의 개수를 세어준다.
for (int j = 0 ; j <win_nums.length;j++){
if(lottos[i]==win_nums[j]){
same_count++;
}
}
}
min_rank = rank(same_count+zero_count);
max_rank = rank(same_count);
return new int []{min_rank,max_rank};
}
public int rank(int n){
switch(n){
case 6:
return 1;
case 5:
return 2;
case 4:
return 3;
case 3:
return 4;
case 2:
return 5;
default :
return 6;
}
}
}
[결과]
'Algorithm' 카테고리의 다른 글
[Java] 백준 14502번 : 연구소 (0) | 2022.03.01 |
---|