1장 알고리즘과 입출력 - (1) 알고리즘 개요
1. 알고리즘
-알고리즘이란 어떠한 문제를 해결하기 위한 여러 동작들의 모임이다
-알고리즘 공부에 가장 효과적인 것은 문제풀이!
2. 알고리즘 문제 사이트
-Baekjoon Online Judge
-알고스팟
-Codeforces
-Topcoder
3. 공부하는 방법
1) 먼저 알고리즘이나 문제를 푸는 방법을 이해
-완벽하지 않거나 일부만 이해했어도 성공!
2) 관련 문제를 풀어본다
-한 문제는 길어야 2시간 정도만 고민
-모르겠으면 포기하고 정답 소스 또는 풀이를 보자
3) 1)번과 2)번에서 이해가 잘 가지 않는 부분이 있으면 질문
-설마 이런 것도 질문해도 될까 고민 되는 것도 질문하라는 뜻
4) 다시 알고리즘을 이해해보고 문제를 다시 풀어본다
-모르겠으면 포기하고 다시 풀이를 보자
-그래도 모르겠으면 다른 일을 하거나, 놀러 나가거나, 다른 알고리즘이나 문제를 풀어본다
4. 가장 중요한 점
-프로그래밍을 많이 하는 것도 중요하지만
-가장 중요한 것은 생각을 많이 하는 것
5. 더 중요한 점
-더 중요한 것은 모르겠으면 포기하고 풀이를 보는 것
-스스로 생각해서 해결하지 않고 답을 보고 해결했어도 해결한 것(내가 잘 안되는 부분... 답을 보고 해결하면 뭔가 찝찝함..)
-1개를 3일에 걸쳐서 푸는 것 보다 3개를 1일 동안 푸는 것이 더 좋다
-미적분 문제를 풀기 위해서 미적분을 스스로 생각해서 만들 필요가 없는 것과 비슷
-여기서 포기라는 것은 최대한 노력을 해보고를 의미함
-무작정 "아 모르겠다~ 포기하고 답봐야지" 가 아님
-그래도 1~2시간 고민해도 모르겠으면 포기!
-알고리즘에서 제일 중요한 것은 알고리즘을 만드는 것이 아니고, 생각의 과정을 배워서 나중에 스스로 그러한 생각을 해내는 것!
6. 프로그래밍 언어
-프로그래밍 언어는 크게 상관이 없다
-C++ > C > Java (많은 사람들의 사용 비율)
-C언어를 사용하는 경우에는 C++을 사용하는 것이 좋다
-C++을 사용하는 경우 C++11, STL, scanf/prinf를 사용하는 것이 좋다
-Java를 사용하는 경우에는 Scanner를 이용해 입력을 편리하게 받는 것이 좋다