Cherry & Cherish

[JavaScript] 프로그래머스(Programmers) 로또의 최고 순위와 최저 순위 본문

Algorithm/Programmers

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

앵도라지 2023. 8. 3. 23:53

자바스크립트 알고리즘 연습을 위해, Python3으로 풀이 후 Javascript로 변환하는 과정을 기록하고 있습니다.

문제 :

 

로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 

순위당첨 내용

 

로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다.

 

민우가 구매한 로또 번호를 담은 배열 lottos, 당첨 번호를 담은 배열 win_nums가 매개변수로 주어집니다. 이때, 당첨 가능한 최고 순위와 최저 순위를 차례대로 배열에 담아서 return 하도록 solution 함수를 완성해주세요.

 

[제한사항]

lottos는 길이 6인 정수 배열입니다.

lottos의 모든 원소는 0 이상 45 이하인 정수입니다.

0은 알아볼 수 없는 숫자를 의미합니다.

0을 제외한 다른 숫자들은 lottos에 2개 이상 담겨있지 않습니다.

lottos의 원소들은 정렬되어 있지 않을 수도 있습니다.

win_nums은 길이 6인 정수 배열입니다.

win_nums의 모든 원소는 1 이상 45 이하인 정수입니다.

win_nums에는 같은 숫자가 2개 이상 담겨있지 않습니다.

win_nums의 원소들은 정렬되어 있지 않을 수도 있습니다.

 

접근 :

내용 그 자체를 구현했다.

 

풀이(Python) :

def solution(lottos, win_nums):
    answer = []
    check, zero = 0, 0
    for i in lottos:
        if i in win_nums:
            check += 1
        elif i == 0:
            zero += 1
    answer.append(check+zero)
    answer.append(check)
    for i in range(len(answer)):
        if answer[i] == 2 :
            answer[i] = 5
        elif answer[i] == 3:
            answer[i] = 4
        elif answer[i] == 4:
            answer[i] = 3
        elif answer[i] == 5:
            answer[i] = 2
        elif answer[i] == 6:
            answer[i] = 1
        else:
            answer[i] = 6
    
    return answer

 

풀이(JavaScript) :

function solution(lottos, win_nums) {
  var answer = [];
  var check = 0;
  var zero = 0;
  for (i = 0; i < 6; i++) {
    if (lottos[i] === 0) {
      zero += 1;
    } else {
      if (win_nums.find((a) => a === lottos[i]) != undefined) {
        check += 1;
      }
    }
  }

  answer.push(check + zero, check);

  for (i = 0; i < 2; i++) {
    if (answer[i] == 2) {
      answer[i] = 5;
    } else if (answer[i] == 3) {
      answer[i] = 4;
    } else if (answer[i] == 4) {
      answer[i] = 3;
    } else if (answer[i] == 5) {
      answer[i] = 2;
    } else if (answer[i] == 6) {
      answer[i] = 1;
    } else {
      answer[i] = 6;
    }
  }
  return answer;
}
Comments