📜 CS/알고리즘

[알고리즘] 문제해결접근법

하나둘세현 2024. 8. 1. 15:27
728x90

알고리즘이란?

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

 

실력 향상 방법

  1. 문제 해결을 위한 계획 만들기
    • (문제에 접근하는 방법, 문제를 세분화하기 위한 전략)
  2. 일반적인 문제 패턴을 파악

 

문제 해결 전략

  • 문제 이해
    1. 문제를 내 방식대로 다시 말할 수 있는가?  
    2. 문제를 해결하기 위해 어떤 입력이 필요한가?
    3. 문제를 해결하면 어떤 출력이 나와야 하는가?
    4. 출력을 입력에서 결정할 수 있는가? 즉, 문제를 해결하기에 충분한 정보가 있는가? (이 질문은 문제를 해결하려는 과정에서야 답할 수 있을 수도 있지만, 지금 이 단계에서 이 질문을 고려하는 것도 여전히 중요하다.)
    5. 중요한 데이터 요소들을 어떻게 라벨링해야 할까?
  • 구체적 예시를 알아보기
    1. 간단한 예시로 시작
    2. 더 복잡한 예시들로 진행
    3. 빈 입력값이 있는 예제를 살펴보는것
    4. 잘못된 입력값이 있는 예제를 살펴보는 것
  • 세분화
    1. 필요한 단계를 명확하게 작성하기
      • 코드를 작성하기 전에 작성할 내용을 미리 생각해, 세부 사항을 고려하기 (개념적 문제나 오해 파악에 도움된다.)
  • 간단화 
    1. 하려는 작업에서 핵심적인 어려움을 찾기
    2. 일시적으로 그 어려움을 무시하기
    3. 간단한 해결책 작성
    4. 그런 다음 그 어려움을 다시 해보기
  • 리펙토링 질문
    • 결과를 확인 가능한가?
    • 다른 방식으로 결과를 도출할 수 있는가?
    • 한눈에 이해 가능한다?
    • 결과나 방법을 다른 문제에도 사용할 수 있는가?
    • 해결책의 성능을 개선할 수 있는가?

✅ 코드를 분석하고 되돌아보자! 즉, 리펙토링은 super important process! 

 

 

 

728x90