반응형
로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다.
민우의 동생은 뭐가 문제일까요? ☹️
문제 풀이 자바스크립트 코드입니다
function solution(lottos, win_nums) {
let answer = [6,6];
const wins = win_nums.filter(x => lottos.includes(x));
answer[1] = 7 - (wins.length || 1); // 최저 순위
answer[0] = 7 - ((lottos.filter(x => x === 0).length + wins.length) || 1); // 최고 순위
return answer;
}
우선 최저 순위는 구하기 쉽습니다. 민우 동생이 지워버린 번호에 대한 가정없이 우선 보이는 번호 중 몇개의 번호가 당첨 번호와 일치하는지 확인하면 최저 순위를 구할 수 있습니다.
민우의 로또 : 44, 1, 0, 0, 31 25 당첨 번호: 31, 10, 45, 1, 6, 19
만약 위와 같은 로또 번호가 주어질 경우, 최저 순위는 0인 번호를 무시하고 당첨 번호와 1, 31 두 번호가 일치하므로 5위가 됩니다.
answer[1] = 7 - (wins.length || 1);
위의 코드 중 || 1 이 부분은 당첨 번호와 일치하는 번호의 개수가 0개인 경우도 최저 순위가 6위가 되도록 하기 위함입니다. 문제에서 1개 혹은 0개의 번호가 일치하는 경우는 6위를 부여하기 때문입니다.
이제 최고 순위를 구해봅시다.
answer[0] = 7 - ((lottos.filter(x => x === 0).length + wins.length) || 1);
최고 순위는 민우 동생이 지워버린 숫자가 사실 다 당첨 번호에 해당한다고 가정했을때 최고 순위가 나오게 됩니다. 따라서 위와 같이 코드를 짜줍니다. 이때도 마찬가지로 일치하는 번호가 0개인 경우를 위해 끝에 || 1 로 처리합니다.
반응형
'자료구조 & 알고리즘' 카테고리의 다른 글
프로그래머스 JadenCase 문자열 만들기 - 자바스크립트 풀이 (0) | 2024.11.24 |
---|---|
프로그래머스 최솟값 만들기 - 자바스크립트 코드 (0) | 2024.11.24 |
프로그래머스 신규 아이디 추천 - 자바스크립트 (0) | 2024.11.17 |
프로그래머스 햄버거 만들기 (stack) - 자바스크립트 풀이 (0) | 2024.11.04 |
프로그래머스 체육복 (greedy) - 자바스크립트 풀이 (0) | 2024.10.30 |