JavaScript/Basic

[JS 알고리즘&자료구조] 문제의 이해

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

개발자들에게 가장 중요한 것은 '문제 해결'이다. 문제 해결을 위해서는 단계별 지침을 통해 계획을 수립해야 할 필요가 있다. 계획을 수립한다고 해서 문제가 해결되는 것은 아니지만 계획을 수립하는 과정을 거치면서 자연스럽게 해결책이 나올 수 있다.

우선 첫 번째로 문제를 이해하는 단계부터 살펴보자. 우선 문제를 마주하게 되면 이해를 하는 게 제일 우선이다. 사람들은 문제가 나오면 빠르게 진행해야 한다는 생각 때문에 급하게 풀려는 경향을 가진다. (특히 프로그래밍에서 더욱 더🤣) 제대로 이해하지 않아도 진행이 되는 것도 맞다. 그러나 시작하기 전에 문제를 확실히 이해하는 것은 정말 중요하다.

이해를 위해 스스로 혹은 면접관에게 던져볼만한 질문들은 아래와 같다.

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

아래의 간단한 예제에 질문들을 적용시켜 보자.

두 개의 숫자를 가지고 합계를 반환하는 함수를 작성해 보세요
  1. 두 개의 숫자를 더한 후 반환하는 함수를 만들어라.
  2. 정수, 부동 소수점 등 어떤 숫자가 입력이 되어야 하는지 명확한 명제가 없기에 질문이 필요하다.
  3. 입력값이 불명확하기에 출력값도 불명확함. 출제자에게 질문이 필요.
  4. 숫자 하나를 입력 안 하면 어떻게 해야할까? 불명확함.
  5. add, num1, num2, sum