[프로그래머스] 로또의 최고 순위와 최저 순위 (JavaScript, Python)

Suyeon Pi·2021년 10월 29일
0

Algorithm

목록 보기
5/5

https://programmers.co.kr/learn/courses/30/lessons/77484

문제 이해

두 배열을 비교하는 문제 -> 같은 것 몇개 있는지? = a개
내 배열에서 0의 개수 몇개인지?
최저 순위 - 0 모두 다름 => 같은 것: a개
최고 순위 - 0 모두 같음 => 같은 것: a개 + 0개수
같은 것이 많을 수록 순위가 높다.

문제풀이

1) 내 로또 배열 돌면서 당첨로또 배열과 비교 -> 이중 for문 => 같을때 count + 1
2) 내 로또 배열 .count(0)를 통해 0의 개수 몇개인지 알아봄
3) 최고순위 = count + 0개수
4) 최저순위 = count

자바스크립트

function solution(lottos, win_nums) {
    const rank = [6, 6, 5, 4, 3, 2, 1]
    let num_0 = 0;
    let count = 0;
    for ( i = 0 ; i < lottos.length ; i++) {
        if (lottos[i] === 0) num_0 ++;
        
        for (j = 0 ; j < win_nums.length ; j ++) {
            if (lottos[i] === win_nums[j]) count ++;
        }
    }
    
    const maxRank = rank[count + num_0];
    const minRank = rank[count];
    return [maxRank, minRank]
}
const lottos = [44, 1, 0, 0, 31, 25];
const win_nums = [31, 10, 45, 1, 6, 19];
console.log(solution(lottos, win_nums))
  • 이중 for문을 돌려 배열의 인자를 비교하였다
  • rank배열을 미리 만들어서 순위를 뽑았다

파이썬

def solution(lottos, win):
    count = 0
    num_0 = lottos.count(0)
    rank = [6, 6, 5, 4, 3, 2, 1]
    for x in lottos:
        if x in win:
            count += 1
            
    high_score = rank[count + num_0]
    low_score = rank[count]
    return [high_score, low_score]

lottos = [44, 1, 0, 0, 31, 25]
win_list = [31, 10, 45, 1, 6, 19]
print(solution(lottos, win_list))
  • 파이썬에서는 for - in문을 이용하여 배열안의 인자를 비교하였다.
  • .count()함수를 통해 해당 인자의 개수를 알 수 있다. (문자열, 배열 둘다 사용가능)
    ex) lottos.count(0)
profile
Stay hungry, Stay foolish!

0개의 댓글