본문 바로가기

항해99_10기/[2주차] 알고리즘 문제풀이

[17번][중급] 로또의 최고 순위와 최저 순위

문제

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

나의 접근

[pseudo code]
1. let match에는 식별 가능한 숫자 중 당첨번호와 맞는 숫자의 개수를 담고
2. let zeros에는 0의 개수 담기
3. 맞은 번호 개수별로 당첨 등수를 알수 있는 rank 오브젝트 생성 (key-value)
4. forEach를 이용해 match와 zeros에 값을 담고, 
5. rank object를 이용해 match와 match+zeros의 value를 반환

key에 숫자로 입력해도 자동 문자로 변환시키다.

 

function solution(lottos, win_nums) {
  let match = 0,
    zeros = 0;
  const rank = {
    match: "rank",
    6: 1,
    5: 2,
    4: 3,
    3: 4,
    2: 5,
    1: 6,
    0: 6,
  };
  lottos.forEach((e) => (e === 0 ? zeros++ : zeros));
  lottos.forEach((e) => (win_nums.includes(e) ? match++ : match));
  console.log(match, zeros);
  return [rank[(match + zeros).toString()], rank[match.toString()]];
}

console.log(solution([44, 1, 0, 0, 31, 25], [31, 10, 45, 1, 6, 19])); // [3, 5]
console.log(solution([0, 0, 0, 0, 0, 0], [38, 19, 20, 40, 15, 25])); // [1, 6]
console.log(solution([45, 4, 35, 20, 3, 9], [20, 9, 3, 45, 4, 35])); // [1,1]