Programmers [로또의 최고 순위와 최저 순위] - 77484
2022. 1. 22. 17:39ㆍ프로그래머스
문제 설명은 다음을 참고해주세요
https://programmers.co.kr/learn/courses/30/lessons/77484
0의 갯수에 따라 점수가 달라집니다. 0의 갯수는 0~6개까지입니다.
파라미터로 들어온 lottos[], win_nums[] 를 돌면서 0을 제외한 번호가 중복된 개수를 셉니다.
그 수를 N 이라고 했을 때
숫자가 최고로 많이 중복된 경우: N + (0의 갯수) 개
숫자가 제일 적게 중복된 경우: N개 가 되겠습니다.
중복된 숫자의 갯수에 따라 swtich문을 돌면서 anser 배열에 정답을 넣어 반환해주면 되겠습니다.
소스코드:
import java.util.*;
public class Programmers_77484 {
public int[] solution(int[] lottos, int[] win_nums) {
int[] answer = new int[2];
Arrays.sort(lottos); Arrays.sort(win_nums);
int sameNum = 0; // 중복되는 숫자 갯수
int zeroNum = 0; // 산 로또 안에 있는 0 갯수
for (int lotto : lottos) {
if(lotto ==0 ) zeroNum++;
}
for(int i=zeroNum; i<win_nums.length; i++){
for (int number : win_nums) {
if(lottos[i] == number){
sameNum++;
break;
}
}
}
int lowestScore = getTempScore(sameNum);
answer[1] = lowestScore; // 최저점
int highestScore = getTempScore(sameNum + zeroNum);
answer[0] = highestScore; // 최고점
return answer;
}
public int getTempScore(int sameNum) {
int tempAns;
switch (sameNum){
case 6: tempAns = 1; break;
case 5: tempAns = 2; break;
case 4: tempAns = 3; break;
case 3: tempAns = 4; break;
case 2: tempAns = 5; break;
default: tempAns = 6; break;
}
return tempAns;
}
}
'프로그래머스' 카테고리의 다른 글
Programmers [소수 만들기] - 12977 (0) | 2022.01.27 |
---|---|
Programmers [없는 숫자 더하기] - 86051, [음 양 더하기] - 76501 (0) | 2022.01.27 |
Programmers [크레인 인형 뽑기 게임] - 64061 (0) | 2022.01.25 |
프로그래머스 [키패드 누르기] - 67256 (0) | 2022.01.24 |
프로그래머스 [신규 아이디 추천] - 72410 (0) | 2022.01.23 |