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에만 써야겠다 둘 다 쓰려니 번거롭다 ㅋㅋ