programmers
[Programmers Level 1] 로또의 최고 순위와 최저 순위 Javascript
냠냠맨
2022. 12. 9. 21:16
⚡문제정보
https://school.programmers.co.kr/learn/courses/30/lessons/77484
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
문제가 너무 길어요... 가서 보세요.... 는 농담이고요
핵심만 보면 이렇습니다.
1. 정수 배열 두개가 주어집니다.
2. 순서상관없이 당첨번호가 내 로또배열에 존재하면 맞춘겁니다.
3. 내 로또번호에는 0도 등장하는데 0은 알아볼수 없기때문에 1등일수도 아닐수도있습니다.
4. 0을 고려해서 내 당첨 가능한 최고순위와 최저 순위를 배열에 담아 리턴합니다.
🙄제한사항
lottos는 길이 6인 정수 배열입니다.
lottos의 모든 원소는 0 이상 45 이하인 정수입니다.
0은 알아볼 수 없는 숫자를 의미합니다.
0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.
lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.
win_nums은 길이 6인 정수 배열입니다.
win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.
win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.
win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.
🔍접근방법
1. 0의 갯수를 알아야한다.
2. 0이 아니면서 틀린 번호의 개수를 알아야한다.
3. 0이 아니면서 맞은 번호의 개수를 알아야한다.
4. 맞은번호와 틀린번호를 등수로 적절히 치환해서 반환해야한다
🔍나의 풀이
function solution(lottos, win_nums) {
let winnum = 0
let losenum = 0
let zerocounter = 0
let loseobj = {
"6" : 6,
"5" : 6,
"4" : 5,
"3" : 4,
"2" : 3,
"1" : 2,
"0" : 1
}
let winobj = {
"6" : 1,
"5" : 2,
"4" : 3,
"3" : 4,
"2" : 5,
"1" : 6,
"0" : 6
}
for(i=0 ; i < win_nums.length ; i++ ) {
if(lottos[i] != 0) {
if(win_nums.includes(lottos[i]) ){
winnum++
}
else losenum++
}
else zerocounter++
}
return [winobj[winnum + zerocounter],loseobj[losenum + zerocounter]]
}
그냥 생각한 의도를 그대로 옮겨서 짰습니다. 무식하게 풀면 안좋은데말이에요..ㅎㅎ;;
막상 생각해보니까 zerocounter는 필요가 없네요
만약 0인 케이스에는 losenum과 winnum을 모두 올려주면 됐으니까..
멍충멍충
반응형