독서 리마인더/알고리즘 문제 해결 전략 #1 3

[알고리즘 문제 해결 전략 #1] 4강 알고리즘의 시간 복잡도 분석

4.1 도입 알고리즘의 속도 측정은 보통 프로그램의 실행 시간으로 이야기 되지만, 기분이 되기에는 부적합하다. 왜냐하면 수행시간은 언어, 하드웨어, 운엉체제, 컴파일러 등 수많은 요소에 의해 바뀔 수 있기 때문이다. 1. 반복문이 지배한다. 알고리즘의 수행시간을 지배하는 것은 입력의 크기에 따라 수행되는 횟수가 정해지는 반복문이다. 4.2 선형 시간 알고리즘 1. 다이어트 현황 파악 : 이동 평균 계산하기 이동 평균(moving average)은 시간에 따라 변화하는 값들을 관찰할 때 유용하게 사용 할 수 있다. vector movingAverage1(const vector& A, int M){ vector

[알고리즘 문제 해결 전략 #1] 3장 코딩과 디버깅에 관하여

이번장에서는 실용적인 코딩방법과 쉽게 디버깅 되지않는 예외에 관해서 다룬다. 3.1 도입 : 코딩의 중요성을 간과하지 말라 프로그래밍 대회에서 좋은 성적을 얻기위한 비결과 프로그래밍 대회에서 얻을 수 있는 가장 큰 소득은 간결하고 효율적인 프로그램을 작성하여 읽기 쉬운 코드를 짜는 것이다. 코드의 길이가 간결하고 명료할수록 디버깅이 편리하고 시간 또한 줄어들게 된다. 3.2 좋은코드를 짜기 위한 원칙 1. 간결한 코드 작성하기 코드가 짧을 수록 오타나 단순한 버그가 생길 우려가 줄고, 디버깅도 쉬워진다. 대회특성상 전역변수를 잘 활용하면 간결한 코드작성이 가능해진다. 당연하지만 노력이 필요하다고 생각함. 2. 적극적으로 코드 재사용하기 간결한 코드작성의 가장 직접적인 방법은 반복되는 코드를 모듈화하여 재..

[알고리즘 문제 해결 전략 #1] 2장 문제해결 개관

2.1 도입 2.2 문제 해결과정 1. 문제를 읽고 이해하기 조급한 마음으로 문제를 곁눈질하고 그림과 입출력으로 유추하려는 행동은 최악의 결과를 초래한다. 문제를 옳게 이해하더라도 사소한 제약조건을 놓쳐 풀 수 없는 문제가 흔하고, 대회에서는 작은 실수도 용서하지않는다. 내가 부족한 부분이 문제를 차근히 읽고 이해하는 부분 2. 재정의와 추상화 문제를 이해했다면 문제를 자신의 언어로 요약, 풀어쓰는 것이다. 추상화 과정을 통해 문제의 본질을 재구성하는 것은 문제를 쉽게 혹은 더욱 어렵게 만들기도한다. 따라서 어느부분을 추상화 할 것인지의 선택과 문제를 재정의 하는법을 고찰하는 것은 좋은 프로그래머의 필수 덕목이다. 3. 계획 세우기 4. 계획 검증하기 문제를 해결하기 위해서 계획과 검증을 하는부분. 2...