프로그래머스

https://programmers.co.kr/

프로그래머스는 국내에서 운영되는 알고리즘 학습 사이트입니다.

다양한 언어별로 온라인에서 코드를 작성,실행,결과 확인 및 다른 사람들의 결과 풀이도 제공하며
기초적인 알고리즘부터 실제 코딩테스트에 사용된 문제까지 엄선해서 제공해줍니다.

알고리즘 문제외에도 구인중인 기업과 구직자분들을 매칭해주는 시스템도 제공해주는데요.
이런 부분들은 개발자에게는 참 좋은것 같습니다. 문제도 재밌게 풀다보면 좋은 직장에도 입사할 수 있는 행운이 찾아올테니까요 ㅎㅎ

Baeakjoon Online Judge

https://www.acmicpc.net/

Baeakjoon Online Judge 는 국내에서 알고리즘 학습 사이트로는 현존하는 가장 오래된 사이트가 아닐까 싶습니다.
( 저도 이 사이트를 통해서 제일 처음 알고리즘 문제를 접해보았고 많은 좌절을 했었답니다….하하.. )

그만큼 문제의 양도 방대하고 많은 사람들이 오랫동안 이용했던 사이트이므로 문제의 퀄리티와 사이트의 안정성도 높다고 볼 수 있습니다.

그리고 주기적으로 대회도 주최하고 랭킹 시스템도 있으므로 자신의 실력을 뽐내고 싶은분들이라면 1등을 향해 도전해보는것도 좋을것 같습니다.

Leetcode

https://leetcode.com/

국내에서는 프로그래머스, 백준저지가 유명하다면 글로벌하게는 아마 가장 많이 들어보거나 접해본 알고리즘 사이트 중 하나가 Leetcode 가 아닐까 싶습니다.

그만큼 많은 사람들이 이용하고 있으며 알고리즘에 대한 문제뿐 아니라 글,토론과 같은 방대하고 다양한 정보들도 접해 볼 수 있는곳입니다.

또한 작성한 알고리즘 코드의 대한 최적화,속도등에 대한 측정치를 제공해줌으로써 내가 짠 코드가 얼마나 효율적인지 쉽게 알 수 있어,
코드를 개선함에 있어 많은 도움을 받을 수 있는점도 장점입니다.

HackerRank

hackerrank.com

HackerRank 는 다양한 종류의 알고리즘과 자료구조에 관한 쉬운 문제부터 어려운 문제까지 다양하게 접해볼 수 있는데요.

온라인에서 코드를 작성하고 실행한 결과를 바로 확인 할 수 있을 뿐만 아니라
다른 사람들과 해결 방법에 대한 자유로운 의견을 토론하며 내가 몰랐던 지식이나 새로운 방법도 터득할 수 있습니다.

HackerRank 에서도 구인/구직 관련 정보가 있으니 해외 취업을 생각하신다면 여기서 시작해보시는것도 좋을 것 같습니다.

Topcoder

Topcoder 는 프로그래머를 위한 최초의 온라인 시합장 중 하나입니다.

따라서 알고리즘을 배우려는 목적보다는 자신의 프로그래밍 실력을 다른 사람과 경쟁으로 검증하기 위한 목적으로 이용하기에 적합합니다.


해당 사이트에서는 온라인을 통해 알고리즘에 관한 대회와 특정한 도전과제로 다른 사람과의 대결을 할 수 있는 이벤트가 주기적으로 열리는데,
해당 대회나 이벤트에 참여한 프로그래머들과 누가 더 빨리 문제를 해결하는지 경쟁하고 순위를 매겨 상금까지 탈 수 있는 재밌고 유익한 사이트라 할 수 있습니다.

우리나라의 실력있는 프로그래머들도 해당 사이트를통해 세계 무대에서 국내의 위상을 드높여 주시리라 믿습니다.. 화이팅! ( 크… 국뽕.. )

Geeksforgeeks

https://www.geeksforgeeks.org

여러분들도 아마 알고리즘 문제를 많이 풀어보셨다면( 그리고 해결법을 구글링을 통해 찾다보면 ) Geeksforgeeks 사이트를 접해 본 경험이 한번쯤은 있으실 겁니다.

다만 사이트의 느낌이 깔끔하고 정돈되어있지 않다고 느껴질지는 몰라도 알고리즘에 관한 방대한 예시와 해결법들을 제공하는 사이트입니다.

그리고 알고리즘문제를 해결함에 있어 복잡도/최적화등을 개선시키는 방법에 대한 예시들도 있기 때문에 알고리즘 실력을 높이는데 있어서는 많은 도움을 주는 사이트가 될 것입니다.

exercism

https://exercism.io/

exercism 은 알고리즘보다는 프로그래밍을 배우기 좋은 사이트입니다.

이곳서는 다양한 연습문제들을 통해 프로그래밍에 관한 지식을 향상 시키도록 도와주지만, 그렇다고 아주 높은 수준의 지식을 요구하지는 않아서 프로그래밍 언어의 기초적인 활용을 설명과 문제로 어렵지 않게 학습할 수 있습니다.

만약 새로운 언어를 배우고 싶다면 exercism 사이트를 이용해보는것을 추천드립니다!

마치며..

해당 글에서는 알고리즘과 프로그래밍을 학습하기 위한 사이트들을 엄선해 보았습니다.

개인적인 생각으로는 이론적인 공부에 많은 시간을 투자하기보다는 문제 해결을 통해 언어에 익숙해지고 논리적인 사고를 키울 수 있는 방법이 실력 향상에는 더 큰 도움이 될것이라 믿어 의심치 않습니다. ㅎㅎ

프로그래머로 취직을 한다해도 어지간한 회사들은 코딩면접은 통해 지원자의 실력을 판가름하는 경우가 많으니 미리미리 연습을 많이해서 익숙해져야 긴장되는 면접에서도 알고있는 지식을 맘껏 펼칠 수 있는 기회가 올것입니다.

평생 공부해야하는 숙명을 타고난 모든 프로그래머분들을 응원하며 이글을 마치겠습니다.

감사합니다.