반응형
문제설명
로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다.
순위당첨 내용
1 | 6개 번호가 모두 일치 |
2 | 5개 번호가 일치 |
3 | 4개 번호가 일치 |
4 | 3개 번호가 일치 |
5 | 2개 번호가 일치 |
6(낙첨) | 그 외 |
로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.
제한사항
- lottos는 길이 6인 정수 배열입니다.
- lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
- 0은 알아볼 수 없는 숫자를 의미합니다.
- 0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
- lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
- win_nums은 길이 6인 정수 배열입니다.
- win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
- win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
- win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
전체코드(Java)
import java.util.*;
class Solution {
public int[] solution(int[] lottos, int[] win_nums) {
// 정답의 개수에 따른 순위를 미리 정의해 놓는다.
int[] answer = {6,6,5,4,3,2,1};
// 맞은 개수와, 0의 개수를 정의한다.
int correct = 0;
int zero = 0;
for(int i=0;i<lottos.length;i++){
// 만일 lottos의 수가 0이라면 zero를 증가
if(lottos[i] == 0 ){
zero++;
}
// lottos의 수가 0이 아니라면 win_nums에 존재하는지 확인하여 존재하면 correct 증가
else if(contains(win_nums,lottos[i])){
correct++;
}
}
// zero가 다 맞을 경우와 다 틀릴 경우를 배열에 담아 반환
int[] result = {answer[correct+zero],answer[correct]};
return result;
}
public static boolean contains(final int[] arr,final int num){
return Arrays.stream(arr).anyMatch(i->i==num);
}
}
전체코드(Python)
def solution(lottos, win_nums):
# 갯수만큼 감했을때 등수가 나오도록 7을 rank에 셋팅한다
rank = 7
# lottos를 순회(중복제거)하며 맞은 갯수에 따라서 최대 등수를 rank에 저장한다
for l in set(lottos):
if l in win_nums:
rank-=1
# 0이 다 맞았다고 전제하여 0의 갯수만큼 등수를 올리고, 다 틀린경우 rank를 등수로 매긴다
answer = [rank-lottos.count(0),rank]
# 값이 7일 경우 7등은 없으므로 1을 감하여 6등으로 만든다
return [i-1 if i ==7 else i for i in answer]
혹시라도 정정할 내용이나 추가적으로 필요하신 정보가 있다면 댓글 남겨주시면 감사하겠습니다.
오늘도 Jindory 블로그에 방문해주셔서 감사합니다.
[참고]
https://programmers.co.kr/learn/courses/30/lessons/77484?language=java
반응형
'코딩테스트 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 소수 만들기(Java/Python) (0) | 2022.03.23 |
---|---|
[프로그래머스] 숫자 문자열과 영단어(Python) (0) | 2022.03.16 |
[프로그래머스] 다리를 지나가는 트럭(Python) (0) | 2022.03.16 |
[프로그래머스] 신규 아이디 추천(Python) (0) | 2022.03.09 |
[프로그래머스] 신고 결과 받기(Java/Python) (0) | 2022.03.09 |