코딩 테스트/프로그래머스 level1

폰켓몬

fullfish 2021. 10. 11. 11:10

초기 코딩

function solution(nums) {
    var answer = 0;
    return answer;
}

 

첫 아이디어

nums[0]과 nums[1]를 비교하고 다르다면

중복되지 않은 수를 넣어놓은 picknum도 비교해서 이 역시 다르면

picknum에 집어넣고 나중에 길이를 재려고했음

 

나의 코드

function solution(nums) {
    var answer = 0;
    let max = nums.length/2; // 다 다를때 맥스
    let picknum = []; //뽑은 수 들어감
    let count = 0;
    let pickcount = 1;
    picknum[0] = nums[0];
    
    for(let i = 0 ; i < nums.length ; i++){
        for(let j = i+1; j < nums.length ; j++){
            if(nums[i]!==nums[j]){
                for(let k =0 ; k < picknum.length ; k++){
                    if(nums[j] !== picknum[k]){ //다 다르면
                        count +=1;
                    }
                if(count===picknum.length){ //할당
                    picknum[picknum.length] = nums[j];
                    pickcount +=1;
                    count = 0;
                }
                }
                
            }
        }
    }
    answer = pickcount;
    return answer;
}

 

너무 복잡해지다보니까 이건 아닌거 같아서 다른 아이디어를 내보기로 함

 

다음 아이디어

중복되지 않은 수를 세는 함수를 찾아보니 있었다.

함수를 잘 활용하자..

전체 nums에서 중복되지 않은것을 센후에 half=nums길이/2 보다 많으면 half리턴

적으면 그값리턴을 하기로 했다

 

최종 코드

function solution(nums) {
    var answer = 0;
    let notsame = [...new Set(nums)].length;
    let half = nums.length/2;
    
    if(notsame > half){
        answer = half;
    }
    else{
        answer = notsame;
    }
    return answer;
}

 

중복 제거법

1. new Set(배열)
Set객체로서 배열의 중복값 제거함   이거로 나온 값은 배열이 아님

 

Set객체를 배열로 변환하기

1. [...Set객체]

2. Array.from(Set객체)

3. forEach 이용하기    <- 이건 아직 이해가 안간다

 

참조 : https://hianna.tistory.com/422

 

 

 

'코딩 테스트 > 프로그래머스 level1' 카테고리의 다른 글

x만큼 간격이 있는 n개의 숫자  (0) 2021.10.18
직사각형 별찍기  (0) 2021.10.17
짝수와 홀수  (0) 2021.10.17
없는 숫자 더하기  (0) 2021.10.07
시작  (0) 2021.10.07