알고리즘 공부가 무엇인지 알고싶습니다.
이제 막 코딩공부를 시작한 학생입니다.
It관련해서 진로를 알아보고 있는데,
언어 습득 >> 알고리즘을 공부 >> 코딩테스트
이렇게 많이들 알려주시더라구요..
여기서 알고리즘이 코딩테스트에서 보는 내용인 것인지
좀 자세하게 알고싶습니다.
+또 컴공과가 아닌 타과생이라 조언좀 부탁드립니다..
알고리즘을 어느 정도 알아야 코딩 테스트를 보기 좋기는 합니다.
코딩테스트는 개인적으로도 별로 자신이 없기는 하지만 주변에서는 많이 풀어보면 요령이 생긴다고 합니다.
아래 사이트에서 연습 해보는건 어떠할까 합니다.
안녕하세요.
기업에 취업하기 위해 코딩테스트를 준비하시는 것으로 보입니다.
코딩테스트는 문제를 제시하고 그것을 풀수있는 알고리즘을 만들어 가는 것입니다.
여기서 프로그래밍 언어는 도구라고 생각하시면 됩니다.
내가 자신 있는 프로그래밍 언어라는 도구를 활용하여 제시 된 문제를 해결하는
코딩을 진행 하시는 겁니다. 어떤 문제를 해결하기 위해 가장 효율적인 방법을
만들어 내는 것을 알고리즘이라고 생각하시면 되겠습니다.
일단은 도구 사용법은 익혀야 하니 언어습득을 하시고
프로그래머스, 백준 홈페이지에 접속하시면 알고리즘 문제들이 있습니다.
그 문제들을 풀기 위해 코딩을 하는 것이 코테의 과정으로
확인해보시면 많은 도움이 될 것이라 생각합니다.
감사합니다.
네 맞습니다.
언어를 공부해서 알고리즘 공부를 해서 코딩테스트를 본다.
우선은 본인의 코딩테스트에서 사용할 한가지 언어를 선택하시고 문법을 익혀야합니다.
그리고 다양한 알고리즘 이론에 대해서 공부해야하지요
그리디
구현
DFS/BFS
정렬
이진 탐색
다이나믹 프로그래밍
최단 경로
그래프 이론
등이 있구요 거의 이정도가 많이 나올거에요
그럼 이런 알고리즘 이론을 코딩테스트에 적용해서 문제를 해결해 나가는겁니다.
예를 들어 2020 카카오 신입 공채 1차 테스트 중 한 문제는 이진 탐색 알고리즘을 이용해야하는 문제가 나왔습니다.
가사를 검색하는 문제였습니다.
어떤 한 사람이 있는데 본인이 노래를 좋하합니다. 그래서 본인이 만든 노래에 특정 키워드가 몇개 포함되어 있는지 궁금해 했습니다.
뭐 이런식으로 이야기 처럼 시작되다가 문제가 나옵니다.
가사에 사용되는 단어들과 찾고자 하는 키워드가 매치되는게 몇개인지 그리고 순서대로 매치된 단어들을 배열에 담아서 반환하는 문제였습니다.
다양한 알고리즘을 익혀야하고 문제에 적용시켜보는 많은 연습이 필요할거에요~
통상적으로 이야기하는 코딩테스트는 알고리즘 테스트가 맞습니다.
10글자의 알파벳 중 내가 원하는 글자를 찾는 것은 쉽겠지만 100만개의 알파벳 나열 중 내가 원하는 글자를 찾는 가장 빠른 방법은 무엇이 있을까요? 이런 고민을 하고 효율적으로 풀어가는 것이 알고리즘 입니다.
비전공자 분이시라면 파이썬 기초 문법 책을 독학 하시고, 이후 프로그래머스 같은 알고리즘을 공부 할 수 있는 사이트를 활용하여 꾸준히 문제를 풀어가시는 것을 추천 드립니다. 어느정도 문제 풀이가 손에 익으시면 그 이후에 책을 보거나 다른 독학의 방법을 찾아보시구요.
한가지 간과하면 안될 것이 알고리즘이라는 것은 결국은 문제 풀이 방법이란 겁니다. 5,6 년 전만해도 알고리즘이 개발자를 뽑을 때 가장 중요한 팩터였지만, 지금은 다양한 오픈소스와 클라우드 환경에 대한 이해나 사용경험을 중요시 여깁니다.
꾸준히 공부하시고 좋은 결과 있으시길 바라겠습니다.
힘내세요~!
녕하세요.
현직 머신러닝 / 딥러닝 연구 개발자입니다.
알고리즘이 결국에는 전체적인 프로그램을 구성하는 모양이라고 보면될것이고,
코딩테스트는 주로 알고리즘 위주로 테스트를 하게 됩니다.
개인적으로 알고리즘 공부는 C++ 또는 Python으로 하시길 추천합니다.
C는 지원하는 함수 또는 자료구조가 빈약해서요.
알고리즘은 수학을 공부하는 것 처럼 생각하고, 구현하고, 왜 이렇게 되는지 알아가는 형태로 공부하기를 추천합니다.
책을 한권 구입해서 읽으면서 따라가보는걸 추천합니다.
답변이 마음에 드셨으면 채택을 해주시면 감사하겠습니다.
안녕하세요.
알고리즘에 대해 궁굼하시군요.
알고리즘은 문제 해결 방법을 말하는것입니다.
예를 들어, 100을 구하는 z값을 구하는 방법이라는 문제에서
50+50이나 150-50, 50*2 등 처럼 문제를 푸는 것 을 알고리즘이라고 부릅니다.
x = 50y = 50z = x + y파이썬으로 간단하게 코딩테스트를 하는 것은 위 처럼 만드는 것이라고 간단히 생각하시면 됩니다.
이를 다른 방법으로 만들면.
def z(): return 50 * 2이처럼 많은 방법으로 코딩을 할 수 있습니다.
실제 알고리즘이나 코딩은 위보다는 어렵습니다. 하지만 또 못배울 정도의 난이도가 있는 것은 아닙니다.
언어공부를 하신다면 파이썬 추천드립니다.
배우기 쉽고, 생산성도 좋고, 커뮤니티 활성화가 잘되어있습니다. 구글링으로 파이썬 관련 검색하시면 왠만한 답은 찾으실 것입니다.
추천하는 책으로는 점프 투 파이썬 https://wikidocs.net/book/1 입니다.
이에 대해 유튜버 조코딩님의 사이트를 참고하실 수 있습니다.
https://www.youtube.com/playlist?list=PLU9-uwewPMe2AX9o9hFgv-nRvOcBdzvP5
그리고 생활코딩 https://opentutorials.org/course/1 이란 사이트입니다.
생활코딩 수업까지 듣는다면 가벼운 웹사이트 구현이 가능할 것입니다.
여기까지 알고리즘/코딩에 대한 설명, 프로그래밍 공부 방법에 대해 알려드렸습니다.
그럼, 공부 열심히 하시고 좋은 성과 있길 바라겠습니다.
사람이 걸을때
1.한쪽발을 내딛는다
2.뒷꿈치부터 닿는다
3.발가락을 닿는다
4.뒷꿈치를 뗀다
5.발가락을 뗀다
이런식으로 작동하는데 이게 알고리즘입니다. 5가지중 순서만 바껴도 넘어지거나 어딘가 아파오기 시작할겁니다.
알고리즘을 공부한다는건 저 위의 순서과정을 설계하고, 맞는 순서인지 누락되거나 과한부분은 없는지 검토하고, 나중에 뛴다는지 등 추가로 확장할 부분까지 염두에 두고 짜는겁니다.
코딩테스트는 위의 제대로 알고리즘을 이해하는지 다친 환자를 데려다놓고 어디가 잘못된건지 맞춰보라는 의미이고요.
공부법
생활코딩 (opentutorials.org) 여기에 가셔서 기본과 개념을 복습하세요.
그리고나서 GitHub: Where the world builds software · GitHub 여기에 가셔서
구현하고 싶은 기능에 관련된 소스나 아니면 참고하실만한 소스를 구하셔서 그걸로 연습하세요.
전혀 아무런 참고할 소스조차 없다면 아무소스나 가져와서 분석하시면서 알고리즘을 학습하세요.