문제 해결 접근법

Doozuu·2023년 1월 31일
0

📌 알고리즘이란 무엇인가?

특정 작업을 달성하기 위한 과정이나 일련의 단계를 의미한다.


알고리즘을 잘 풀기 위해선

  1. 문제 해결 접근
    문제 해결을 위한 계획 수립
  2. 문제 해결 패턴
    일반적인 문제 해결 패턴 파악

⭐️ 문제 해결 접근법

1단계 : 문제 이해하기

  • 나만의 언어로 문제를 설명할 수 있는가?
  • 문제가 어떤 입력값을 담고 있는가?
  • 출력값은 어떤 형태여야 하는가?
  • 문제를 해결할 단서가 충분히 주어졌는가?
  • 문제에서 정말 중요한 부분이 무엇인가?

2단계 : 구체적인 예제들기

구체적인 예시를 통해 코드가 제대로 작동하는지 확인할 수 있고, 추가적인 정보도 얻을 수 있다.

  • 간단한 예시로 시작하기
  • 더 복잡한 예시로 나아가기
  • 빈 입력값이 있는 예제 살펴보기
  • 유효하지 않은 입력값이 있는 예제 살펴보기

3단계 : 세부 분석 (Break Down) ⭐️

  • 문제 해결을 위한 단계들을 명확하게 작성해보기(주석으로)
    접근 방법을 공식화하여 문제 해결의 흐름을 이해하고, 어떤 단계에서 막히는지 파악하기 쉽다.

4단계 : 문제해결/단순화하기

단순화 방법 :
어려운 부분을 잠시 제쳐두고 단순한 해결책을 작성한 다음 다시 어려운 부분을 통합시키기


5단계 : 되돌아보기/Refactor ⭐️

Refactoring Questions

  • 결과를 다른 방식으로 도출할 수 있는가?
  • 코드를 한눈에 이해할 수 있는가?
  • 이 해결책을 다른 문제에도 적용할 수 있는가?
  • 성능을 향상시킬 수 있는가?(시간 복잡도, 공간 복잡도)
  • 다른 사람들은 어떻게 해결하는가?

ex. 문자열에서 영어 소문자와 숫자만 골라내야 할 때, 정규 표현식을 이용해 아래처럼 나타낼 수 있다.

/[a-z0-9]/.test(str)

여기서 그치는게 아니라, 아래처럼 덧붙여 이야기할 수 있다.

"자바스크립트에서는 정규 표현식이 수행 중인 작업과 사용 중인 브라우저에 따라 성능이 달라질 수 있다는 말을 들은 적 있다. 특히 크롬은 최근 정규 표현식 사용에 문제가 있었기 때문에, 더 나은 방법을 생각해보면 charCodeAt을 이용할 수 있을 것 같다. charCodeAt은 문자를 숫자코드로 바꾸어 주기 때문에 정규 표현식을 수학적 비교로 대체할 수 있다. 실제로 정규 표현식을 사용하면 charCode를 이용하는 것보다 55% 더 느린 케이스를 보있다."

profile
모든게 새롭고 재밌는 프론트엔드 새싹

0개의 댓글