https://programmers.co.kr/learn/courses/30/lessons/77484
문제 분석
- 알아볼 수 없는 번호의 개수를 세고, 이 개수를 활용하여 최고 순위와 최저 순위를 출력한다.
- for문을 통해 알아볼 수 없는 번호를 세고, 최고 순위는 알아볼 수 없는 숫자를 다 맞았다고 가정하며 최저 순위는 다 틀렸다고 가정하고 등수를 반환한다.
문제 풀이
1. for문을 통해 숫자가 0이라면 알아볼 수 없는 숫자(zeroCnt)에 더한다. 만약 아니라면 그대로 일치하는지 if문을 통해 판단하고 맞다면 일치하는 숫자의 개수(goalCnt)에 더한다.
2. 최고 순위는 알아 볼 수 없는 숫자와 일치하는 숫자를 더하여 rank메소드를 통해 순위를 반환한다.
3. 최저 순위는 일치하는 숫자만을 이용하여 rank메소드를 통해 순위를 반환한다.
4. rank메소드는 맞춘 번호 개수를 전달하여 해당 순위를 반환한다.
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
int zeroCnt = 0;
int goalCnt = 0;
for(int i=0;i<lottos.length;i++){
if(lottos[i]==0){
zeroCnt++;
}else{
for(int j=0;j<win_nums.length;j++){
if(lottos[i]==win_nums[j]){
goalCnt++;
break;
}
}
}
}
answer[0] = rank(goalCnt+zeroCnt);
answer[1] = rank(goalCnt);
return answer;
}
static int rank(int number){
if(number==6){
return 1;
}else if(number==5){
return 2;
}else if(number==4){
return 3;
}else if(number==3){
return 4;
}else if(number==2){
return 5;
}else{
return 6;
}
}
}
'Algorithm > programmers' 카테고리의 다른 글
programmers N개의 최소공배수 (0) | 2022.04.18 |
---|---|
programmers 신고 결과 받기 (0) | 2022.04.10 |
programmers 신규 아이디 추천 (0) | 2022.04.10 |
programmers 숫자 문자열과 영단어 (0) | 2022.04.10 |
programmers [카카오 인턴] 키패드 누르기 (0) | 2022.03.20 |