프로그래머스 #11

KAKAO BLIND RECRUITMENT - 신규 아이디 추천

Level 1이라 해서 해봤는데 순간 멍했다
정규표현식을 오랜만에 접해서 그런가 생각이 바로 나지 않았음
또 replace 메소드를 체이닝해서 푼 다른 사람의 코드를 보고 체이닝이 된다는 사실을 깨달음..ㅋㅋ
다른 사람들의 풀이 방법들이 다양했다
나는 문자열을 다루는 것이 익숙하지는 않군..

function solution(new_id) {
    let str = new_id.toLowerCase();
    
    str = str.replace(/[^a-z\d\.\-\_]/g, '');
    str = str.replace(/\.{2,}/g, '.');
    str = str.replace(/(^\.)|(\.$)/g,'');
    
    if(str === '') str += 'a';
    if(str.length >= 16) {
        str = str.slice(0, 15);
        str = str.replace(/\.$/,'');
    }
    
    while (str.length <= 2){
        str += str[str.length - 1];
    }
    
    return str;   
    
}

폰켓몬

function solution(nums) {
    const list = {};
    
    for(let num of nums){
        if(!list[num]) list[num] = [num];
        else list[num].push(num);
    }
    
    const count = Object.keys(list).length;
    const half = parseInt(nums.length / 2);
    
    return count > half ? half : count;
}

입력받은 nums의 종류의 수만큼 다 고를 수 있다면 그게 답

입력받은 nums의 1/2보다 그 종류의 수가 많다면 고를 수 있는 것의 최대 값은 nums 길이의 반

다른 사람들 풀이를 보니 new Set()을 쓴다 뭘까!

Set 객체는 자료형에 관계 없이 원시 값과 객체 참조 모두 유일한 값을 저장할 수 있다.

이렇게 편한 것이..!

중복값을 없앨 때 좋은 듯하다

이제 프로그래머스는 Github에만 써야겠다 둘 다 쓰려니 번거롭다 ㅋㅋ

좋은 웹페이지 즐겨찾기