JavaScript/Basic

[JS 알고리즘&자료구조] 구체적 예제들

발싸믹쏘스 2023. 10. 30. 23:50

앞서 학습했던 질문 5개를 다시 한번 살펴보도록 하자.

  1. 문제를 나만의 방식 혹은 나만의 언어로 제대로 이해했는가? (남에게 설명할 수 있을 정도로 이해해야 한다고 생각함)
  2. 문제가 어떤 입력값을 가지고 있는가?
  3. 문제에서 어떤 출력값이 나와야 하는가?
  4. 입력값이 출력값을 결정할 수 있는가?
  5. 문제에 등장하는 중요한 데이터를 뭐라고 명명할 것인가? 뭐라고 부를 것인가?

면접관이 질문을 던졌고 우리는 위의 질문들을 통해 질문을 열심히 이해한 상황이라고 가정해보자. 그 후에는 문제에 대한 여러 구체적인 예시들을 떠올려 보는 것이다. 예재를 통해 우리는 문제를 좀 더 잘 이해할 수 있고 나중에 문제에 대한 해결법을 적용시켜 해결법이 제대로 작동하는지 검사도 해볼 수 있다. 입력값과 출력값이 알맞게 나와야하기 때문이다. 유저 스토리나 유닛 테스트가 이에 해당한다. (유저 스토리 : 사용자의 입장에서 요구사항을 이야기하는 것)

이제 구체적인 예시를 몇가지 방법들을 살펴보자.

  1. 간단한 예시로 시작한다. 
    입력값과 출력값이 제대로 출력됐을 때의 예시를 2-3개 정도 작성해본다.
  2. 그보다 더 복잡한 예시들을 만들어본다.
  3. 빈 입력값이 들어오는 상황에 대한 예시를 만들어본다.
  4. 유효하지 않은 입력값이 들어오는 상황에 대한 예시를 만들어본다.

아래 문제에 구체적인 예시를 떠올리는 방법을 적용시켜보자.

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


1. 간단한 예시로 시작한다.

charCount("abcd"); // { a:1, b:1, c:1, d:1 }
charCount("hello"); // { h:1, e:1, l:2, o:1 }

2. 복잡한 예시들을 만들어본다.

charCount("My phone number is 12341234"); // 대소문자는 어쩌고 공백은 어쩌고 숫자는 어쩌지..?

3. 빈 입력값이 들어오는 상황에 대한 예시를 만들어본다.

charCount(); // 빈 객체, null, undefined, 에러, false 중 어떤 걸 반환해야하지?

4. 유효하지 않은 입력값이 들어오는 상황에 대한 예시를 만들어본다.

charCount({}); // 객체가 들어오면?
charCount([]); // 배열이 들어오면?
charCount(null); // null이 들어오면?
charCount(undefined); // undefined가 들어오면?
charCount(false); // boolean이 들어오면?