디지털 너구리 : 게임, IT 정보 및 다양한 지식 공유드립니다.

안녕하세요 엘빈입니다. 컴퓨터공학에 있어 알고리즘은 꼭 공부해야할 부분이라고 들었습니다. 이번에 종만북이라고 불리는 "알고리즘 : 문제해결전략"을 구매하여 공부하려고 합니다. 이번 포스팅은 종만북 2장 "문제 해결 개관"을 요약 정리하여 포스팅하겠습니다.

 

 

 


포스팅은 "알고리즘 문제 해결 전략" 책을 바탕으로 정리 및 요약식으로 작성되었습니다.

 

요점 : 문제 해결 과정을 여러 단계로 나누는 방법을 소개한다.

 

1. 문제를 해결하는 과정

 

(1) 문제를 읽고 이해하기 – 문제가 원하는 바가 무엇인지를 파악한다.

(2) 재정의와 추상화 – 문제를 자신의 언어로 풀어 쓴다.

(3) 계획 세우기 – 문제를 어떤 방식으로 해결할 것인가 생각한다.

(4) 계획 검증하기 – 설계한 알고리즘이 모든 경우에 요구 조건을 만족하는지 확인한다.

(5) 계획 수행하기 – 계획한 알고리즘을 바탕으로 프로그램을 작성한다

(6) 회고하기 – 자신이 문제를 해결한 과정을 돌이켜 본다. 다른 사람의 코드를 보는 것도 좋은 방법이다.

 

* 문제를 풀지 못했다 하더라도 답안 소스를 참조하고 복기를 동반한다

 

 

2. 문제 해결 전략

 

: 문제를 해결하는데에는 직관과 체계적인 접근이 필요하다. 직관은 복기를 통해 이미 문제의 해결 방법을 알고 있을 때 사용하며 체계적인 접근은 막막한 문제를 만났을 때 해결하기 위해 백지상태부터 차근차근 점진적으로 해결하는 과정이다

 

 

# 체계적인 접근 방법

 

(1) 문제를 분류하는 습관을 가지자 : 큰 맥락에서 비슷한 해결 전략을 가진 문제들이 많다.

 

(2) 단순한 방법부터 시작하자 : 처음부터 어려운 방법으로 문제를 해결하려고 하면 오히려 꼬일수가 있다. 해결 전략은 가장 단순한 것부터 시작한다.

 

(3) 직접 프로그래밍 하라 : 문제의 수식화가 무조건 좋은 것은 아니다. 직접 프로그래밍을 수행하여 입출력 값을 보고 해결하는 것도 좋은 방법이다.

 

(4) 문제를 단순화 하자 : 복잡한 문제가 주어질 때 제약 조건, 변수 등을 줄여 최대한 이해하기 쉽고 단순한 형태로 변형시킨다.

 

(5) 그림으로 그려보자 : 문제를 이해하기 쉬운 그림으로 표현함으로서 직관적인 해결 방법이 떠오를 수 있다.

 

(6) 문제를 분해하자 : 제약 조건을 분리하면 프로그래밍 작성이 쉬워진다.

 

(7) 뒤에서부터 생각하자 : 어떤 문제들은 내재된 순서를 거꾸로 바꾸면 훨씬 쉬워지는 문제들도 있다.

 

(8) 정규화도 고려하자 : 익숙하지 않으면 힘들지만 결과적으로 똑 같은 것들을 그룹으로 묶은 뒤 대표들만 고려하는 방법인 정규화로 해결되는 문제들도 있다.

 

반응형

공유하기

facebook twitter kakaoTalk kakaostory naver band