javascript 문제 풀이 - 네이버 부스트캠프 자가진단 문제

Chaedie·2022년 6월 14일
0

Javascript - PS

목록 보기
2/24
post-custom-banner

네이버 부스트캠프 자가진단 문제

나의 답안

//* 시스템
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답게 사용하고 싶다. 👍

세번째 생각 - Coding Convention

네이버는 탭을 4spaces를 쓰는구나. JS 컨벤션이 2칸이라는 이야기를 듣고 불편해도 익숙해지려고 노력중이었는데, 나도 4칸으로 돌아가고 싶...다.. 🤣

마지막 예외처리 부분에 if에 중괄호없이 한줄로 작성되어 있는데 예외처리부분이라 간단하게 처리해준건가? 생각보다 Strict하지 않은건가? 굉장히 궁금하다.

NAVER Javascript 코딩 컨벤션!

(찾아본 결과는 비밀!로 하겠습니다🙈🙉🙊)

profile
TIL Blog - Today's Intensive Learning!
post-custom-banner

0개의 댓글