프로그래머스 : 폰켓몬 / K번째 수 / 로또의 최고순위와 최저순위 : level1

KHW·2021년 6월 20일
0

알고리즘

목록 보기
25/37

폰켓몬 문제

기본적인 내용

간단히 배열크기 N일때 N/2종류를 골라야하는데 최대로 많은 종류를 해야한다. => 즉, N/2보다 종류가 많으면 최대로 고를 수 있는 것은 N/2종류이고 N/2보다 종류가 적으면 최대로 고를 수 있는 것은 현재 존재하는 종류의 최대이다.

  • 방법1
function solution(nums) {
       const set = new Set(nums);     //중복된 것을 제거한 set1 설정
    const n_divide_length = nums.length / 2;  // N/2만큼 가져가도 좋은 크기 설정
    return Math.min(nums.length / 2, set.size);
}
  • 방법2
function solution(nums) {
      const set = new Set(nums);
    return set.size <= nums.length/2 ? set.size : nums.length/2 
}

K번째 수 문제

기본 내용

배열 array, [i, j, k]를 원소로 가진 2차원 배열 commands가 매개변수로 주어질 때, commands의 모든 원소에 대해 앞서 설명한 연산을 적용했을 때 나온 결과를 배열에 담아 return 하도록 solution 함수를 작성해주세요.

function solution(array, commands) {   
        return commands.map(arr=>array.slice(arr[0]-1,arr[1]).sort((a,b)=>a-b)[arr[2]-1])
}

로또의 최고 순위와 최저 순위

100/100
20분

기본 내용

모르는부분은 0으로 처리하고 로또의 맞는 갯수에 따라 최고순위와 최저순위를 결정한다. => 간단히 배열로 로또 순위를 설정하자

  • case1 : 변수로 처리
function solution(lottos, win_nums) {
    let connect = [6,6,5,4,3,2,1];
    var answer = [];
    let correct = 0,zeroCount = 0;
    lottos.map(x=>{
        if(win_nums.indexOf(x) > -1)
            correct++;
        if(x == 0)
            zeroCount++;
    })
    return [connect[correct+zeroCount],connect[correct]];
}
  • case2 : 객체로 전부 묶음
function solution(lottos, win_nums) {
    
    const lotte = {
        rank : [6,6,5,4,3,2,1],
        noSee : 0,
        correctNum : 0
    }

    lottos.map(num=>{
        if(win_nums.indexOf(num) > -1)
            lotte.correctNum++;
        if(num == 0)
            lotte.noSee++;
    })
    
    return [lotte.rank[lotte.noSee+lotte.correctNum],lotte.rank[lotte.correctNum]];
}
profile
나의 하루를 가능한 기억하고 즐기고 후회하지말자

0개의 댓글