https://programmers.co.kr/learn/courses/30/lessons/77484
javascript와 python 모두 filter 함수를 사용했다. 약간의 사용법은 다르다.
문제 풀이는 적어도 맞힌 갯수와
최대로 맞힐 수 있는 갯수를 구하면 된다.
#javascript
function solution(lottos, win_nums) {
var answer = [];
var rank=[6,6,5,4,3,2,1]
var min = lottos.filter(x => win_nums.includes(x)).length;
var zero = lottos.filter(x => x === 0).length
var max = zero+min;
answer=[rank[max],rank[min]]
return answer;
}
javascript 에서 in 연산자의 속성값은 인덱스를 나타내는 숫자나 값을 가지고 있기 때문에 여기서는 includes 를 사용했다.
includes는 배열이 특정 요소를 포함하고 있는지 없는지를 Boolean 값으로 반환함.
그리고 filter는 true를 받으면 그 요소를 유지하고, false를 받으면 버리고 새로운 배열로 만들어 반환한다.
#python
def solution(lottos, win_nums):
rank = [6,6,5,4,3,2,1]
min = list(filter(lambda x : x in win_nums, lottos))
zero = list(filter(lambda x : x==0, lottos))
max = min + zero
answer = [rank[len(max)], rank[len(min)]]
return answer
python 에서 filter는 함수와 이터러블 객체가 속성값으로 필요하다.
그래서 람다를 사용해서 lottos의 요소 하나씩 win_nums 에 있는지 확인하고 없는 객체들은 삭제하여 새로운 배열을 반환하고
객체들의 길이를 구해 몇개인지 확인하는 방법이다.
'알고리즘' 카테고리의 다른 글
[프로그래머스 javascript] 124 나라의 숫자 (0) | 2021.07.03 |
---|---|
[프로그래머스 javscript] 키패드 누르기 (0) | 2021.07.02 |
[프로그래머스 python, javascript] 소수구하기 (0) | 2021.07.01 |
[백준 파이썬 2667 ] DFS 단지번호붙이기 (0) | 2021.06.29 |
파이썬 DFS 등산경로 문제 (0) | 2021.06.29 |
댓글