코딩 테스트 준비
로또의 최고 순위와 최저 순위 level 1
개발쉐발
2022. 10. 6. 14:56
728x90
반응형
문제 설명
https://school.programmers.co.kr/learn/courses/30/lessons/77484#fn1
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 풀이
function solution(lottos, win_nums) {
var answer = [];
var num = [];
var len = 6;
var temp = 0;
var zero = 0;
num = lottos.filter(x => !win_nums.includes(x));
temp = len - num.length;
for(var i = 0; num.length > i; i++){
if(num[i] === 0) zero += 1;
}
zero = temp + zero;
if(zero === 6) answer.push(1);
if(zero === 5) answer.push(2);
if(zero === 4) answer.push(3);
if(zero === 3) answer.push(4);
if(zero === 2) answer.push(5);
if(zero <= 1) answer.push(6);
if(temp === 6) answer.push(1);
if(temp === 5) answer.push(2);
if(temp === 4) answer.push(3);
if(temp === 3) answer.push(4);
if(temp === 2) answer.push(5);
if(temp <= 1) answer.push(6);
return answer;
}
문제를 맞추기는 했지만 코드가 쓸데없이 길고, 초반에 코드를 짤때 생각을 잘 못했다. 그래서 다른 사람의 풀이를 보면서 효율적인 코드를 공부하기로 했다.
다른 사람 풀이
function solution(lottos, win_nums) {
const rank = [6, 6, 5, 4, 3, 2, 1];
let minCount = lottos.filter(v => win_nums.includes(v)).length;
let zeroCount = lottos.filter(v => !v).length;
const maxCount = minCount + zeroCount;
return [rank[maxCount], rank[minCount]];
}
감탄이 절로 나온다. 특히 배열을 통한 반복문을 벗어난 것은 꼭 배울만한 요소다.
filter 함수는 혁명이다 배워두자 꼭!
Filter 함수
- arr.filter(callback(element[, index[, array]])[, thisArg])
- callback : 각 요소에 대한 조건값
- element : 처리할 현재 요소
- index : 현재 인덱스
- array : filter를 호출한 배열
- thisArg : callback을 생행 할 때 this로 사용하는 값
사용방법 3가지 예시
list.filter(function(word){
return word.length >= 6 ;
})
list.filter(word => word.length >= 6);
function filterCallbackFunction(word){
return word.length >= 6;
};
list.filter(filterCallbackFunction);
위와 같은 인자 값을 받는데 보통 아래와 같은 형태로 많이 쓴다. ( =>는 지원이 안 되는 브라우저도 있어서 function(){}을 사용하는 게 좋다.)
https://programmer93.tistory.com/65
javascript filter 사용법 - 삽질중인 개발자
- JAVASCRIPT filter 사용법 - 자바스크립트의 filter 메서드는 조건을 주고 해당 조건이 참인 요소를 모아 새로운 배열로 반환하는 메서드이다. 배열에서 원하는 데이터만 추출 하고 싶을 때 자주 사용
programmer93.tistory.com
728x90
반응형