티스토리 뷰

🍕알고리즘이 무엇일까? 

A process or set of steps to accomplish a certain task.

(알고리즘은 특정 작업을 달성하기 위한 과정이나 일련의 단계를 의미한다.)

문제를 해결하기 위해 수행해야 하는 일련의 수학적 단계, 또는 특정한 광고를 사용자에게 제안하는 페북이나 구글의 알고리즘이라고 할 수 있음 

 

How do you improve?  

  1. 문제 해결을 위한 계획을 수립하기 (문제에 접근하는 방법, 문제를 세분화하기 위한 전략)
  2. 자주 사용되는 문제 해결 패턴들을 익히기

🍕문제 해결(Problem Solving)

  1. Understand the Problem - 문제를 이해하기
  2. Explore Concrete Examples - 구체적인 예시를 알아보기
    • 경계 조건, 입력값, 출력값 등을 살펴보기
    • 복잡한 입력값과 예시를 알아봄으로써 문제를 이해하고 단순화
    • 빈 값을 입력값으로 넣었을 때의 예시 
    • 유효하지 않은(Invalid) 입력값이 주어진 예시 
  3. Break it Down -문제 세분화
    • 내가 취해야할 조치를 명시적으로 써라(기능구현에 관한 것)-> 코드에 주석처리를 통해 써놓는게 좋음
  4. Slove/ Simplify - 문제를 해결하고 단순화하기 
    • 해결할 수 있다면 해결하고, 해결할 수 없다면 더 단순한 부분의 문제를 해결하라는 것 
    • 주의) 해결할 대상을 아예 바꿔서 쉬운 문제를 고르는 것은 아님 -> 전체적인 구현에 집중하기 위해 시간이 많이 소요되는 부분을 무시하라는 것을 의미한다. 
    • 어떤 부분에서 막히더라도 해당 부분을 다시 통합해야한다는 것을 염두에 두고 다른 것을 먼저 구현
  5. Look Back and Refactor - 문제를 복습하고 재구성하기
Refactoring Questions 
-Can you check the result?(결과를 확인해봤나요? 잘 작동하는 지?) 
-Can you derive the result differently?(다른 방식으로도 결과를 도출할 수 있는가?)
-Can you understand it at a glance? (코드가 클린한지? 이해하기 쉬운지?)
-Can you use the result or method for some other problem? (다른 문제에서도 적용해서 쓸 만한지? ) 
-Can you improve the performance of your solution?  (기능 개선을 할 수 있나요?)
-Can you think of other ways to refactor? (다른 방법으로 코드를 작성할 수 있나요?)
-How have other people solved this problem? (다른 사람들은 어떻게 해당 문제를 접근,해결했나요?)

 

댓글