//* 시스템
function sol(nums) {
let searched = new Array();
let count = 1;
let answer = new Array();
for (let p1 = 0; p1 < nums.length; p1++) {
if (searched.includes(nums[p1])) {
continue;
}
searched.push(nums[p1]);
for (let p2 = p1 + 1; p2 < nums.length; p2++) {
if (nums[p2] === nums[p1]) {
count++;
}
}
if (count > 1) {
answer.push(count);
}
}
if (answer.length === 0) {
return [-1];
}
return answer;
}
function solution(arr) {
var answer = [];
var map = new Map();
arr.forEach( element => {
if (map.has(element)) { //---가
map.set(element, map.get(element) + 1);
}
else { //---나
map.set(element, 1);
}
});
map.forEach( (value) => {
if (value > 1) { //---다
answer.push(value);
}
});
if (answer.length == 0) answer.push(-1); //---라
return answer;
}
JS에서 Object는 순서가 없다. 그래서 Map도 순서가 없을 것으로 예상해서 Map으로의 풀이를 포기하고 배열로 구현했는데, 풀이에서 Map으로 푸는걸 보고 좀 아쉽다는 생각을 했다.
확실히 디테일한 문법까지 세세하게 기억하는게 유리한 것 같다. 디테일한 문법을 다 외운다는게 막 억지로 외우라는게 아니고 사용을 많이 했다면 당연하게 알 수 있는 영역인데 그만큼 내가 JS에 익숙하지 못하다는 증거다.
앞으로 문제를 많이 풀고, 구현을 많이 해보면서 문법에 익숙해져야겠다.
모법답안 map.forEach()부분을 보면 콜백함수를 통해 풀이한것을 볼수 있다. 전형적인 JS스타일인것 같은데, 아직은 이 스타일에 익숙하지 못하다.
저런 스타일은 문제를 많이 푼다고 익숙해질수있는 스타일은 아닌듯하다. 오히려 실제 JS코드를 많이 봐야 익힐 수 있는 함수형 스타일이 아닐까 싶다. (문제풀이로도 의도적으로 사용하면 충분히 가능하긴 하겠지만.)
많이 경험 하고 싶다. JS를 JS답게 사용하고 싶다. 👍
네이버는 탭을 4spaces를 쓰는구나. JS 컨벤션이 2칸이라는 이야기를 듣고 불편해도 익숙해지려고 노력중이었는데, 나도 4칸으로 돌아가고 싶...다.. 🤣
마지막 예외처리 부분에 if에 중괄호없이 한줄로 작성되어 있는데 예외처리부분이라 간단하게 처리해준건가? 생각보다 Strict하지 않은건가? 굉장히 궁금하다.
(찾아본 결과는 비밀!
로 하겠습니다🙈🙉🙊)