ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JS 알고리즘&자료구조] 세부 분석
    JavaScript/Basic 2023. 10. 31. 23:24

    면접관의 질문을 정확히 이해하였고 문제에 대한 구체적인 예시들도 몇 가지 만들어놓았다. 그 다음은 문제를 세분화할 차례이다. 세분화는 해결책의 기본적인 구성 요소들을 단계적으로 작성해보는 것을 뜻한다. 세분화를 엄청 정확한 구문과 문법에 맞춰서 작성할 필요는 없으며 또한 꼭 필수적인 것도 아니다. 단지 면접과 문제의 결과를 도출하는 과정에 있어서 필요한 과정이며 문제가 주어졌을 때 바로 문제 풀이에 들어가기 보다는 이러한 분석 과정들을 통해 얻어낼 수 있는 힌트들도 많을 것이고 좋은 점수를 따기 위해서도 필요한 과정이라는 것이다. 

    세분화를 통해 우리는 코드를 마구잡이로 작성하는 것이 아니라 정돈된 상태로 작성할 수 있으며 문제에 대한 이해가 제대로 되어있는지 확인할수도 있다. 그럼 이제 아래의 문제를 세분화해보도록 하자.

    문자열을 입력받으면 각 문자의 수를 반환하는 함수를 작성하라

    아래와 같이 세분화해볼 수 있다.

    // 예시를 생각해낸다.
    charCount("hello");
    /* {
      h: 1
      e: 1
      l: 2
      o: 1
    } */
    charCount("abcdef");
    /* {
      a: 1
      b: 1
      c: 1
      d: 1
      e: 1
      f: 1
    */
    
    // 결과가 도출되기 위한 단계를 짜본다.
    const charCount = (str) => { // 입력값으로 문자열이 들어옴
      // 문자열이 들어오면 각 문자의 수를 센다
      // 영어 소문자, 숫자의 수를 카운트해서 객체로 반환한다.
    }
    
    // 좀 더 구체적으로 명시해본다.
    const charCount = (str) => { // 입력값으로 문자열이 들어옴
      // 마지막엔 객체가 반환되어야 한다.
      // 입력값으로 들어온 문자열을 루프를 돌면서 각 문자를 카운트한다.
        // 문자/숫자가 키로써 이미 객체 안에 존재한다면 1을 더해준다.
        // 객체 안에 존재하지 않는다면 문자/숫자를 키로 설정하고 1을 값으로 해준다.
        // 만약 문자가 숫자나 문자가 아닌 공백이나 특수기호라면 카운트하지 않는다.
      // 객체를 만들어서 반환한다.
    }

    이렇게 세분화하는 것이 문제를 직접적으로 해결해주는 것도 아니고 또 이렇게 한다고 해서 문제를 해결할 수 있는 코드가 무조건 짜진다는 것은 아니다. 그러나 이러한 과정을 통해 문제 해결을 위한 틀을 잡을 수 있으며 각 단계에서 내가 무엇을 해야하는지 명확히 알 수 있다. 적어도 결과를 도출해내기 위한 과정을 설계했다는 것을 면접관에게 보여줄 수 있기에 충분히 좋다는 것이다. 

    댓글

Designed by Tistory.