728x90
알고리즘이란?
특정 작업을 달성하기 위한 과정이나 일련의 단계를 의미
실력 향상 방법
- 문제 해결을 위한 계획 만들기
- (문제에 접근하는 방법, 문제를 세분화하기 위한 전략)
- 일반적인 문제 패턴을 파악
문제 해결 전략
- 문제 이해
- 문제를 내 방식대로 다시 말할 수 있는가?
- 문제를 해결하기 위해 어떤 입력이 필요한가?
- 문제를 해결하면 어떤 출력이 나와야 하는가?
- 출력을 입력에서 결정할 수 있는가? 즉, 문제를 해결하기에 충분한 정보가 있는가? (이 질문은 문제를 해결하려는 과정에서야 답할 수 있을 수도 있지만, 지금 이 단계에서 이 질문을 고려하는 것도 여전히 중요하다.)
- 중요한 데이터 요소들을 어떻게 라벨링해야 할까?
- 구체적 예시를 알아보기
- 간단한 예시로 시작
- 더 복잡한 예시들로 진행
- 빈 입력값이 있는 예제를 살펴보는것
- 잘못된 입력값이 있는 예제를 살펴보는 것
- 세분화
- 필요한 단계를 명확하게 작성하기
- 코드를 작성하기 전에 작성할 내용을 미리 생각해, 세부 사항을 고려하기 (개념적 문제나 오해 파악에 도움된다.)
- 필요한 단계를 명확하게 작성하기
- 간단화
- 하려는 작업에서 핵심적인 어려움을 찾기
- 일시적으로 그 어려움을 무시하기
- 간단한 해결책 작성
- 그런 다음 그 어려움을 다시 해보기
- 리펙토링 질문
- 결과를 확인 가능한가?
- 다른 방식으로 결과를 도출할 수 있는가?
- 한눈에 이해 가능한다?
- 결과나 방법을 다른 문제에도 사용할 수 있는가?
- 해결책의 성능을 개선할 수 있는가?
✅ 코드를 분석하고 되돌아보자! 즉, 리펙토링은 super important process!
728x90
'📜 CS > 알고리즘' 카테고리의 다른 글
[알고리즘] 문제 해결 패턴 (3) 기준점 간 이동 배열 패턴 (0) | 2024.08.12 |
---|---|
[알고리즘] 문제 해결 패턴 (2) 다중 포인터 패턴 (0) | 2024.08.08 |
[알고리즘] 문제 해결 패턴 (1) 빈도수 세기 패턴 (0) | 2024.08.05 |
[알고리즘] 배열과 오브젝트의 성능평가 (0) | 2024.08.01 |
[알고리즘] 빅오표기법 (0) | 2024.07.30 |