문제 해결 접근법

minho·2022년 2월 27일
0

개요


1. 문제를 제대로 이해하기

문제를 여러분 방식대로 다시 생각할 수 있나요?

  • 여러분만의 방식으로 문제를 다시 생각해보아야 해요 그래야 질문이 무엇인지 실제로 이해할 수 있어요.
  • 입력값이 무엇인가요, 출력값이 무엇인가요, 문제에 대한 해결책에서 나와야 할 결과는 무엇인가요를 생각해봐요.

예시

문제. 두 숫자의 합을 반환하는 함수를 구하세요.

  • 문제를 자신만의 방식으로 다시 정의 할 수 있나요?
    두 숫자의 합을 더해 반환한다.
  • 문제에 해당하는 입력값은 무엇인가요?
    정수인가? 소수인가? 문자인가?를 확인한다.
  • 문제의 출력값은 무엇인가요?
    정수인가? 소수인가? 문자인가?를 확인한다.
  • 문제를 풀기에 충분한 정보를 가지고 있나요?
    덧셈을 할 요소들
  • 문제를 풀기위한 데이터에 어떤 레이블(label)을 정해줘야 하나요?
    add(), sum, num1, num2 ...

2. 구체적 예제들

  1. 입력값과 출력값의 순서대로 예시를 두세 개 작성해 보세요.
  2. 점차적으로 복잡한 예시들을 사용해 보세요.
  3. 빈 입력값일때 결과를 생각해 보세요.
  4. 유효하지 않은 입력값을 넣었을때를 생각해 보세요.

예시

문자열(String)을 넣으면 각 character의 개수를 구하는 함수를 만들어 보세요.

코드를 입력하세요
  1. 입력값과 출력값의 순서대로 예시를 두세 개 작성해 보세요.
charCount("aaaa"); // {a:4}
charCount("hello"); // {h:1, e:1, l:2, o:1}
  1. 점차적으로 복잡한 예시들을 사용해 보세요.
charCount("My phone number is. 324-1234-4623")
// 질문1: 빈 공백은 count에 포함시켜야 하나?
// 질문2: '-'또한 문자로 보아야 하나?
  1. 빈 입력값일때 결과를 생각해 보세요.
charCount() // 그냥 빈 공백을 input으로 넣을때 null,undefinde등을 반환해야 하나?
charCount("") //공백을 반환해야 하나?
  1. 유효하지 않은 입력값을 넣었을때를 생각해 보세요.
charCount(null) //null값을 넣으면 어떻게 될까?
charCount(undefined) //undefined값을 넣으면 어떻게 될까?

3. 세분화

예시

문제. 문자열(String)을 넣으면 각 character의 개수를 구하는 함수를 만들어 보세요.(단, 대문자는 소문자로 취급하며 숫자와 알파벳의 개수만을 구합니다.)

function charCount(str){
// 객체를 만들어 각 char의 숫자를 구한다.
// loop를 통해 각각의 char를 받는다.
 	// 만약 char가 숫자/문자이고 받은 key가 객체 내에 있으면 value에 1을 더한다.
 	// 만약 char가 숫자/문자이고 받은 key가 객체 내에 없으면 value는 1이다.
 	// 만약 char가 숫자/문자가 아니라면 아무것도 하지 않는다.
// 객체를 반환하고 끝낸다.
}

이렇게 세분화 하여 목록을 만들어 놓는것은 다음과 같은 장점이 있습니다.

  • 접근 방법을 공식화 하여 해야할 방향을 알고 있다.
  • 시간이 부족해서 중간까지만 구현했다 하더라도 작업에 대한 틀을 잡을 수 있다.

4. 리펙토링(Refactoring)

리펙토링 할때 질문들

  • 결과를 확일할 수 있나요?
  • 다른방법을 생각할 수 있나요?
  • 한눈에 보고 이해할 수 있나요?(코드가 얼마나 직관적인가요?)
  • 결과나 방법을 다른 문제에도 적용시켜볼 수 있나요?
  • 해결책의 성능을 향상시킬 수 있나요?
  • 다른 사람들은 이 문제를 어떻게 해결하나요?

리펙토링의 순서

  1. 다른방법을 생각해보기
  2. 가독성 향상시키기
  3. 해결책 성능 향상시켜보기
  4. 다른 사람들의 문제풀이를 분석하기
profile
Live the way you think

0개의 댓글