본문 바로가기

알고리즘/시작하기

Problem Solving 시작하기

이 글을 쓰는 시점에서, 제가 PS 공부를 본격적으로 시작한지 딱 1년이 되었습니다.

 

이제부터 제가 그동안 공부하고 이해한 것들을 이 블로그에 기록해 두려고 합니다.

 

아직 제 실력이 아주 좋은 편이라고도 할 수 없고, 지식이 많다고도 할 수는 없지만,

혹시 이제 PS의 세계에 발을 들이기 시작한 분들이 계신다면 그분들께 제 글이 도움이 되기 바랍니다.

 

 

이 블로그는 C++언어를 기반으로 쓰일 예정입니다.

기본적인 C++문법은 알고 있다는 가정하에 글이 쓰일 것이기 때문에, 언어를 배우기 위한 목적이라면 이 블로그는 적합하지 않습니다.

 

PS에서 많은 사람들이 C++을 사용하는 이유는 간단합니다.

문제를 풀 때 시간과 메모리 제한이 있기 때문에, 실행속도가 빠른 언어가 유리합니다.

이를 위해 C언어를 이용하고, 추가적으로 STL을 사용하기 위해 C++을 사용합니다.

 

그렇기 때문에, PS를 위한 프로그래밍을 할 때는 객체지향적으로 코딩을 할 필요가 없습니다.

지금 이 문제 하나만 제대로 돌아가도록 코딩하면 충분합니다. 유지보수도 필요없기 때문에 전역변수도 마음껏 사용합시다. 함수 여기저기에서 바꿔도 상관없고, 내가 알아볼 수 있으면 어떻게 하든 상관없습니다.

 

PS를 잘하기 위해서는 2가지 능력을 키워야 합니다.

문제 해결 능력 - 문제를 가지고 있는 지식을 이용해 해법을 찾는 능력이 필요합니다.

구현 - 해결 방법을 알았다면, 코드로 변환해내야 합니다. STL등의 도구도 적절히 사용할줄 알아야 합니다.

 

필요한 지식은 자료구조와 알고리즘을 공부함으로써 얻을 수 있고,

해법을 찾는 능력과 구현은 문제를 많이 풂으로써 얻을 수 있습니다.

 

PS를 시작하는 많은 분들이 둘 중 한가지에 치우치는 경우가 많은데, 밸런스를 잘 맞춰 공부하는게 중요합니다.

 

 

이 블로그에는 그동안 제가 공부한 자료구조/알고리즘들을 설명하는 글들과 함께,

Codeforces 대회의 풀이를 중심으로 제가 푼 문제들의 해설들이 올라올 예정입니다.

 

저도 완벽한 사람이 아닌지라, 설명에 틀린 부분이 있을 수 있고 코드가 잘못되어있을 수도 있습니다.

그런 것들을 발견하셨다면 댓글로 제보해주시면 빠르게 수정하겠습니다.

 

쓰다보니 뭔가 의식의 흐름대로 쓴 것 같네요.

아무튼 앞으로 잘 부탁드립니다.

 

마지막으로 정말 씹송합니다만,

제 닉네임의 유래이자 제가 여기까지 오는데 버팀목이 되어 준 안즈쟝을 보고 가시기 바랍니다.

 

'알고리즘 > 시작하기' 카테고리의 다른 글

PS를 공부하는 뉴비들을 위한 안내서  (13) 2022.01.03
분할 정복 (Divide and Conquer)  (0) 2020.04.23
탐욕법 (Greedy)  (0) 2020.04.16
완전 탐색 (Brute Force)  (0) 2020.04.14
알고리즘의 시간복잡도  (0) 2020.04.10