공상하는 개발자

[알고리즘] 알고리즘 바보가 알려주는 알고리즘 (꿀)팁 본문

개발/알고리즘

[알고리즘] 알고리즘 바보가 알려주는 알고리즘 (꿀)팁

공상과학소설 2020. 2. 23. 23:11
반응형

IT 관련 대기업이나 이름 있는 기업들은 대부분 코딩 테스트를 채용과정에 넣는다. 

그래서 알고리즘을 공부를 많이 하게 되는데, 나는 학부생 때 알고리즘 공부를 그렇게 잘하는 학생이 아니었고 지금도 물론 아니다.

하지만 요즘 싸피에서 알고리즘 교육을 받으면서, 어떤 식으로 알고리즘 문제에 접근을 해야 하는지 조금은 깨우친 것 같다. 

아직 알고리즘 초보이지만, 지금까지 배우고 느낀 내용들을 정리해보았다.

(물론 나의 뇌피셜에서 나온 내용들이기에 참고만 하는 게 좋다.)

 


1. 문제를 많이 접하고 어떤 유형의 문제인지 파악하는 법을 익히자.

알고리즘에는 BFS, DFS, 그리디, DP, 순열, 조합, 부분집합, 재귀, 그래프 등 다양한 유형들의 문제들이 많다. 이러한 다양한 유형들은 많이 보고 풀다 보면 알 수 있다. 그렇게 문제에 익숙해지다 보면 어떤 문제를 접했을 때 어떠한 유형인지 파악하고 그쪽으로 문제 접근이 가능하게 된다. 그리고 여러 가지 유형이 섞여 나오는 경우에도 잘 파악해서 유형들을 분리해서 이해하는 것이 중요하다. 차근차근히 문제를 파악하고 풀어본다면 풀 수 있을 것이다.

 

2. 많이 나오는 알고리즘 유형은 모르겠으면 외우자.

우리가 일반적으로 보게 되는 코딩 테스트에 많이 나오는 유형들은 예를 들면 BFS, DFS, 순열, 조합, 부분집합, 그래프, 재귀 등이 있다. 나는 BFS, DFS 같은 경우에는 그냥 관련 레퍼런스들을 보면서 눈으로 배우고 문제로 해결하려고 했었다. 이렇게 하니까 BFS, DFS를 어떤 식으로 구현해야 하는지도 모르겠고, 문제에도 접근을 하기 쉽지 않았다. 그래서 BFS, DFS를 직접 구현해보고, 그래도 이해가 안 된다면 외워서 문제에 접근하는 방식으로 했는데, 훨씬 이해도 잘 되고 문제도 웬만한 건 잘 풀렸다. 대부분 문제들은 위에서 말했던 알고리즘 유형들을 섞어서 내기 때문에, 유형 하나하나를 조목조목 히 잘 뜯어서 알고 있다면 응용을 통해 풀 수 있을 것이다. 이 과정을 잘 행한다면 1번도 쉬워질 것이다.

 

3. 모르는 문제를 오래 붙잡고 있지 마라.

흔히 알고리즘 문제를 풀 때 모르는 문제가 나오기 마련이다. 이러한 문제들을 하루, 이틀이 넘게 생각해서 푼다면 기분이 엄청 좋을 것이다. 하지만 이것은 시간낭비라고 생각한다. 그렇게 오래 걸려서 풀 바에는 다른 사람들의 풀이법을 보고, 이해하고 자기 것으로 만들어보는 과정을 진행한다면 좀 더 효율적으로 공부를 할 수 있을 것이다. 그렇다고 너무 빨리 포기하라는 말은 아니다! 

 

4. 그냥 꾸준하게 풀자.

모든 공부는 한번 접게 되면 까먹기 마련이다. 꾸준하게 풀면서 연습하는 게 제일 좋은 공부방법이다. 잊어버리지만 않아도 공부는 성공한 것이니 알고리즘을 꾸준하게 공부하는 게 중요하다. (물론 나도...) 

 

5. 생각만 하지 말고 구현을 해보자.

알고리즘 문제는 어떤 식으로 풀면 되겠다 라는 생각이 들 때가 있는데, 그렇게 풀면 정답이 뜨는지 의문일 때가 있다.(내가 그러하다.) 이런 생각이 들면 뭔가 했다가 안될걸 생각해서 구현을 하기 싫어진다. 그러지 말고 직접 구현을 해서 부딪혀보고 그때 가서 다시 고쳐보는 용기를 가지자. 그리고 처음 생각한 것이 대부분 맞으니까 걱정은 하지 마라. 


유용한 알고리즘 사이트

1. 백준 알고리즘 사이트

-> 누구나 아는 알고리즘 사이트! 문제를 잘 골라서 푼다면 고수가 될 수 있다~

https://www.acmicpc.net/

 

Baekjoon Online Judge

Baekjoon Online Judge 프로그래밍 문제를 풀고 온라인으로 채점받을 수 있는 곳입니다.

www.acmicpc.net

 

👉백준 사이트를 사용하는 사람들을 위한 꿀팁!

-> 백준 문제의 난이도를 표시해주는 확장 프로그램. 자신의 티어도 볼 수 있어서 백준으로 공부하는 사람들에게 큰 꿀팁이다.

 

https://solved.ac/

 

solved.ac

 

solved.ac

 

2. 삼성 Expert Academy

-> 삼성 역량 테스트를 준비하기 좋은 사이트인데 백준보다는 정답 기준이 까다롭지 않다.

https://swexpertacademy.com/main/main.do

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

3. 정올

-> 풀어볼 만한 알고리즘 사이트

http://www.jungol.co.kr/

 

JUNGOL

천재는 노력하는 자를 이길수 없고, 노력하는 자는 즐기는 자를 이길수 없다.

www.jungol.co.kr

 

4. 프로그래머스 

-> 대부분의 코딩 테스트 플랫폼이 프로그래머스이므로 접해보지 못한 사람은 프로그래머스에 익숙해지는 것을 추천한다.

https://programmers.co.kr/

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 


 

당연한 말이겠지만 자료구조에 대한 이해가 기본적으로 되어있으면 알고리즘 공부에 대해 쉽게 접근할 수 있다. 

List, Queue, Stack, Graph 등 기본적인 것들은 구현과 이해를 해놓는 것이 좋다.

기본적인 것을 하면 어려운 것들도 쌓아 갈 수 있기 때문이다.

별거 없는 꿀팁이지만 여기서 좋은 것들만 쏙쏙 빼가서 다들 알고리즘 고수가 되길 바란다.( 그전에 내가 제일 먼저...!)

다들

화이탱~

 

반응형
Comments