알고리즘 공부 사이트

알고스팟

https://algospot.com/

 

더블릿

http://www.dovelet.com

 

Colility
https://codility.com/programmers/lessons/1-iterations/

개발자 알고리즘 테스트할 때도 쓰는 사이트

 

코딩도장

http://codingdojang.com/

 

오일러 프로젝트(Project Euiler)

https://projecteuler.net/

http://euler.synap.co.kr/

 

LeetCode

https://leetcode.com/problemset/algorithms/

기타

백준 https://www.acmicpc.net/

http://www.koistudy.net/

http://jungol.co.kr/

http://www.koreaalgorithm.com/

http://poj.org/

 

 

 

http://exercism.io

https://www.4clojure.com/

소프트웨어 트렌드의 변화 – SI to 알고리즘

SI의 시대에서 ~~~의 시대로 넘어오면서
(삑데이터, IOT, AI, 기타 솔루션, 모바일, 자체서비스 …)
알고리즘의 중요도가 더 높아진 것 같다.

기존 한국의 소프트웨어 산업은 영어의 원뜻과는 별 상관없는 것 같지만, SI라고 불리는 한 축을 중심으로 성장 해 왔다. 그리고 이 SI산업은 전통적인 여러 산업의 효율성을 증대시켜주고 2000년대 한국산업의 발전에 지대한 역할을 했다.
(개발자는 죽어났지만.. 거의 80년대 봉재노동자급… 중동 건설인부 = 일본캐나다 진출)
이 시기에는 시스템 성능을 높이기 위해서는 쿼리튜닝, 파일용량 낮추기, 네트워크와 컴퓨팅 파워 업그레이드가 더 중요했다. (자바-오라클의 시대)
개발 방법론도 효율적인 코딩보다 빠른 코딩이 대세였고… 그 흐름을 타고 순위권에 진입한 언어가 자바, 파이썬, 루비

SI의 업무분야는 대강 아래의 범주에 다 포함된다.
– 은행/카드/보험/증권 (차세대) 개발, 쇼핑몰, ERP연동, VOC
근데 이 산업군들은 이제 개발이 다 끝났다. 개선은 계속 이뤄지겠지만… 적어도 서비스를 구축하기에 급급하던 시절은 지났다.

근데.. 인터넷 왕폭발이 일어나고 10년쯤 지난 지금은? 좀 다르다.

이제 생각할 수 있는 것은 거의 다 만들어졌다.
이제는 ‘새로움’ 보다는 ‘나아짐’을 만드는 시대다.
서비스를 개선한다는 것은 비용을 낮추거나 사용편의성을 높이는 것일텐데…
같은 컴퓨팅 파워로 더 많은 일을 하려면 아키텍처/알고리즘의 개선.. 밖에 답이 없지 않을까?
– 서버1대 월 10만원에서 10%효율을 높이는 것은 쓸데없는 짓이지만… 1000대라면
기존에 운영되던 서비스들도 인터넷 인구가 늘면서 사용자가 많아지고 따라서 데이터양이 늘고.. 이로인해 기존에 겪어보지 못한 문제를 맞닥뜨리게 된다.

이런 배경에서 알고리즘의 중요성이 다시 대두되는 것 같다.

 

노가다 코딩의 시대의 종말

요즘은 뭘 해도 데이터가 많다. SI업무분야에 포함되는 업종들도 마찬가지…
예전엔 0.01ms의 차이가 별 것 아니었지만, 데이터양이 많아지다보니 이런 부분에서 더 큰 차이를 보인다.
라이브러리들도 많은 기능보다는 작고 빠른게 대세로 자리잡고 있다.
– PlayFramework, Flask와 같은 경량프레임워크의 약진
(그리고 라이브러리 뭐 있었는데 기억이 안난다)

 

이직 – 알고리즘

어느회사 이력서를 넣었다가 온라인 코딩테스트를 하길래…
ㅋ 뭐 얼마나 대단하길래? 라는 생각으로 1시간만에 하고 자야지~
하고 시작했다가.. 좌절을 맛봤다. 잠도 못자고…
그러고 나니 알고리즘에 대해 다시 생각을 해 보게 된다
… 되게 어려웠는데
이 회사 개발자가 몇명인데~ 여기 있는 다른개발자들은 이런문제 다 풀어내는건가?

취업 이후에는 계속 아키텍팅이나 구조분석/설계에만 집중을 했었는데…
시대가 변한 것 같으니 알고리즘도 공부를 해야하지 않을까 싶다.

책도 좋지만..
온라인 테스트 사이트가 다른사람하고 경쟁심도 생기고… 훈장도 받을 수 있고 하니 더 좋아보인다
다양한 언어를 지원 해 줘서 이미 풀었던 문제나 쉬운 문제를 새로 공부하는 언어로 다시 풀어보는 것도 도움이 될 것 같다.

 

사이트 목록은 여기서 퍼옴 http://ledgku.tistory.com/40

오일러 프로젝트

알고스팟

더블릿

코딜리티

https://codility.com/programmers

코드도장

탑코더

코드포스

해커랭크