문제 해결 접근법

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개의 댓글

관련 채용 정보