별거 없고 그냥 풀면서 생각했던 걸 끄적입니다.
😶 생각해보기
최고 순위와 최저 순위를 만들어 주면된다.
민우가 당첨된 숫자들의 개수를 알아낸다.
ex) [1,2,3,4,5,6]이 당첨 숫자고 민우가 산 로또가 [1,2,9,7,0,0]이라면 당첨된 숫자는 [1,2]로 2개
최고 순위 = 민우가 가진 0의 개수 + 민우가 맞춘 로또 개수
최저 순위 = 민우가 맞춘 로또 개수
🤔 코드 생각해보기
현재 당첨된 숫자의 개수를 어떻게 구할 것인가?
당첨 배열에 forEach를 사용해서 해당 숫자가 민우의 로또에 includes라면 count++;
현재 민우가 가진 0의 개수를 어떻게 구할 것인가?
민우 배열에 forEach를 사용해, 해당 숫자가 0이라면 unknownNumber++;
최고 순위
7 - ( 당첨된 숫자 + 0의 개수 ) ex) 7 - ( 2 + 2 ) = 3등.
7인 이유는 0위부터 시작하는게 아니기 때문에 6에 +1을 해줬다. 는 얘도 에러가 났다.
보니까 0이없고 당첨된 숫자가 없다면 얘도 7등이 찍혀버린다. 6등이 최대인데!
그래서 7이되버리면 6을 반환하도록 삼항연산자를 사용했다!
최저 순위
7 - 당첨된 숫자 ex) 7 - 2 = 5등
단 위에처럼 했더니 6자리 모두 0일 경우 에러가 발생했다. 왜냐면 count가 ++이 되지않았기 때문에
뺄 숫자가 없어서 6등인데 7이 넘어가 최저 순위가 7로 찍히기 때문이다..
3항 연산자를 넣어서 만약 6자리 모두 0일 경우 6등으로 찍히도록 설정해줬다.
✨ 코드
function solution(lottos, win_nums) {
// 현재 지워지지 않는 숫자들 중에 당첨된 숫자의 개수를 구한다
let count=0;
win_nums.forEach((num)=>{
if(lottos.includes(num)) count++;
})
// 민우가 가진 지워진 숫자의 개수
let unknownNumber = 0;
lottos.forEach((num)=>{
if(num === 0) unknownNumber++;
})
const min = 7 - count;
const max = 7 - count - unknownNumber;
var answer = [max === 7 ? 6 : max , min === 7 ? 6 : min];
console.log(answer)
return answer;
}
🎶 리뷰
좀 더 다양한 케이스를 생각하고 코드를 만들어야겠다.
다른 사람들 후기를 보니까 switch문도 많이 사용하고
리듀서도 사용하고 .. 정말 풀이 방법은 많구나 includes는 배열 크기가 커지면 엄청 오래 걸릴 것같다..
'공부 > 알고리즘&코딩테스트' 카테고리의 다른 글
[JS] N까지의 수의 합 (0) | 2023.06.08 |
---|---|
[프로그래머스 lv1] 크레인 인형뽑기 게임 JS (0) | 2021.08.17 |
댓글