당신은 주제를 찾고 있습니까 “자바스크립트 알고리즘 공부 – 자료구조와 알고리즘 그리고 코딩테스트?“? 다음 카테고리의 웹사이트 ppa.charoenmotorcycles.com 에서 귀하의 모든 질문에 답변해 드립니다: https://ppa.charoenmotorcycles.com/blog. 바로 아래에서 답을 찾을 수 있습니다. 작성자 드림코딩 이(가) 작성한 기사에는 조회수 103,953회 및 좋아요 3,529개 개의 좋아요가 있습니다.
자바스크립트 알고리즘 공부 주제에 대한 동영상 보기
여기에서 이 주제에 대한 비디오를 시청하십시오. 주의 깊게 살펴보고 읽고 있는 내용에 대한 피드백을 제공하세요!
d여기에서 자료구조와 알고리즘 그리고 코딩테스트? – 자바스크립트 알고리즘 공부 주제에 대한 세부정보를 참조하세요
자료구조와 알고리즘은 꼭 공부 해야 하는 걸까요? 프론트엔드 개발자도 자료구조와 알고리즘을 공부 해야 하나요? 코딩 테스트 문제 푸는 연습만 하면 좋은 공부가 될까요? 이번 영상에서 여러분들이 주신 질문들에 시원하게 대답을 해드리겠습니다 ❤️ (↙ 자세한 내용)
___________________________
💡 풀스택 개발 로드맵 ⇢ https://academy.dream-coding.com/pages/912e50
🚀 엘리와 더 체계적으로 배우고 싶다면 ⇢ 드림코딩 아카데미:
http://academy.dream-coding.com/
……………………………………………..
☀️ 드림코딩 엘리
모든 드림코더분들이 개발자로 성장해 나가고 꿈을 이루는 여정에 함께 할 채널입니다 🙂
❝Don’t forget to code your dream
여러분들의 멋진 꿈을 코딩하세요 ⭐️
……………………………………………..
☀️ 연락
채널 문의 ⇢ [email protected]
아카데미 문의 ⇢ [email protected]
……………………………………………..
🌐 프론트엔드 개발자 되기 입문자편 영상 목록:
https://www.youtube.com/playlist?list=PLv2d7VI9OotQ1F92Jp9Ce7ovHEsuRQB3Y
📒 자바스크립트 기초 강의 영상 목록:
https://www.youtube.com/playlist?list=PLv2d7VI9OotTVOL4QmPfvJWPJvkmv6h-2
💻 개발자라면 누구나 알고 있으면 좋은 지식 💡
https://www.youtube.com/playlist?list=PLv2d7VI9OotSn1ThdDeqvBx8QuRSd01qv
💰 개발자 경력 관리 영상 목록:
https://www.youtube.com/playlist?list=PLv2d7VI9OotSyQ6RPdytiHID5Cmnv_sA3
📄 이력서 작성 방법
https://www.youtube.com/playlist?list=PLv2d7VI9OotTZfvF0s8Vs0gpRtodlTsgg
📈 IT 트렌드
https://www.youtube.com/playlist?list=PLv2d7VI9OotRTfM1zJLQMCLriBpLFg8r-
📷 개발자 브이로그
https://www.youtube.com/playlist?list=PLv2d7VI9OotR1tALnxov7sAUshyBmfYfU
🤗 생산력 향상 팁
https://www.youtube.com/playlist?list=PLv2d7VI9OotQB-9p29xrAnARhuE1Vf88I
……………………………………………..
#자료구조#개발자#알고리즘
🎶 Music
Sunshine by Joakim Karud
자바스크립트 알고리즘 공부 주제에 대한 자세한 내용은 여기를 참조하세요.
코딩테스트 광탈 방지 A to Z : JavaScript | 프로그래머스 스쿨
우리, 이렇게 { 공부 } 해요! < Step 1. > 자료구조 / 알고리즘 개념 이해하기. 영상 강의를 통해 코딩 테스트에 꼭 …
Source: school.programmers.co.kr
Date Published: 12/3/2021
View: 889
프론트엔드 개발자에게도 알고리즘 공부가 중요할까? – 요즘IT
아마 대부분은 코딩 테스트를 통과하기 위해 알고리즘을 공부하고 있을 겁니다. … 자바스크립트(JavaScript)’에서 일부 로직에 알고리즘을 적용해 …
Source: yozm.wishket.com
Date Published: 2/18/2021
View: 7835
자바스크립트 알고리즘 – 시작 (a.k.a 자료 모으기)
볼만한 알고리즘 블로그 시리즈. Javascript 공부/Data Structure + Algorithms – soldonii.tistory.com · Javascript 공부/알고리즘 풀이 …
Source: joontae-kim.github.io
Date Published: 12/13/2021
View: 2735
JavaScript로 코딩테스트 준비하기(0) – 왜?
코딩테스트를 준비하는 이유, 다르게 말하면 알고리즘을 공부하는 이유는 무엇일까요? 저 같은 취준생에게는 취업의 문턱을 넘기 위해서 일 것입니다.
Source: velog.io
Date Published: 9/22/2021
View: 9103
자바스크립트 알고리즘 문제풀이(코딩테스트 대비) – 인프런 | 강의
자바스크립트가 코딩 공부하기가 편해서 준비했는데 어떻게 준비할까 많이 막막했습니다. 그런 막힌 가슴을 뻥 뚫어주는 통쾌한 강의였습니다. 이 강의는.
Source: www.inflearn.com
Date Published: 12/28/2022
View: 2493
[ 강의 후기 ] 자바스크립트 알고리즘 문제풀이(코딩테스트 대비)
python 으로 공부를 하면서 2~3개 정도 스타트업의 코딩 테스트를 치렀는데 모두 python 은 지원이 되지 않고 JS 로만 응시가 가능했다. JS 로 새로 …
Source: ywtechit.tistory.com
Date Published: 4/1/2022
View: 836
【한글자막】 JavaScript 알고리즘 & 자료구조 마스터클래스
이번 강의를 통해서 좀 더 실무적이고 현업과 가까운 프로그래밍적 지식을 얻고 있다는 생각이 듭니다. 특히 알고리즘과 구현 방법을 공부하면서 너무 흥미롭습니다. 더 …
Source: www.udemy.com
Date Published: 10/1/2021
View: 6387
JavaScript로 코딩테스트 준비하기 (초보자 편) – genieDocs
Algorithm의 다른 글. 자료구조 & 알고리즘 공부를 시작하기 전 Key Point 자료구조 서비스나 어플리케이션에서 필요한 데이터를 메모리 …
Source: geniee.tistory.com
Date Published: 3/28/2021
View: 6250
알고리즘 테스트 공부방법 – OKKY
그말들으니 강의듣는건 멈추고, 일단 문제나 무작정 풀어봐야하나 급 궁금해서 질문올리게 되었습니다.+ 또 찾다보니 자바스크립트 강의는 별로 없어서…
Source: okky.kr
Date Published: 3/8/2021
View: 2741
자바스크립트 알고리즘 공부 / javascript tag
자바스크립트 알고리즘 공부 / javascript tag. 중앙동자린이 2021. 9. 27. 16:40. 반응형. 첫번쨰 코드. 이 코드는 span 태그를 가져와서 읽어오지 않기 때문에 …
Source: ongbike.tistory.com
Date Published: 9/24/2021
View: 8490
주제와 관련된 이미지 자바스크립트 알고리즘 공부
주제와 관련된 더 많은 사진을 참조하십시오 자료구조와 알고리즘 그리고 코딩테스트?. 댓글에서 더 많은 관련 이미지를 보거나 필요한 경우 더 많은 관련 기사를 볼 수 있습니다.
주제에 대한 기사 평가 자바스크립트 알고리즘 공부
- Author: 드림코딩
- Views: 조회수 103,953회
- Likes: 좋아요 3,529개
- Date Published: 2020. 7. 7.
- Video Url link: https://www.youtube.com/watch?v=okHGRlgR8ps
프론트엔드 개발자에게도 알고리즘 공부가 중요할까?
우리는 왜 알고리즘을 공부할까요? 기초 소양을 쌓기 위해서? 좀 더 나은 개발자가 되기 위해서? 아주 틀린 이야기는 아니지만, 좀 더 솔직하게 얘기해 보겠습니다. 아마 대부분은 코딩 테스트를 통과하기 위해 알고리즘을 공부하고 있을 겁니다.
요즘은 취업과 이직은 물론이고, 부트캠프나 대외 활동에서도 지원자를 가려내기 위해서 코딩 테스트를 요구하는 시대입니다. 물론 최근에는 온라인 저지(Online Judge)로 진행하는 코딩 테스트 대신, 실무형 과제를 제출하는 곳도 많이 있는 것 같습니다. 하지만 알고리즘 코딩 테스트는 여전히 많은 기업에서 실재(實在)합니다.
지금으로부터 약 1년 전, 저 역시 복학을 앞둔 상황에서 처음 알고리즘 공부를 시작했습니다. 공부 목적은 당연하게도 코딩 테스트를 준비하기 위해서였습니다. 알고리즘 공부를 본격적으로 해본 건 처음이었기에 처음에는 실력도 부족했고 두려움이 컸습니다. 사실 은연중에 ‘알고리즘 공부가 굳이 필요한가?’라는 생각도 있었기에, 주변 사람들에게 이를 확인받고 싶어 물어보기도 했습니다.
동공 지진
“프론트엔드 개발자에게도 알고리즘 공부가 중요할까요?”
특히 취업을 준비하고 있거나 또는 개발자로 커리어 전환을 시도하는 분이라면 이런 불안감이 더욱 커지는 것 같습니다. 저도 그랬거든요. ‘프론트엔드 개발자라면 일단 서비스부터 잘 만들어야 할 것 같은데, 알고리즘은 또 언제 배우냐?’라며 막막한 마음이 들었던 것이 사실입니다. 실무에서 써먹을 일도 별로 없을뿐더러, 무엇보다 재미가 없습니다. 하지만 코딩 테스트 때문에 울며 겨자 먹기로 하는 수밖에 없었습니다.
저도 이런 고민을 했던 입장으로써, 오늘은 프론트엔드 개발자의 관점에서 알고리즘 공부의 중요성에 대해 솔직하게 이야기해보고자 합니다. 이번 포스트를 통해 프론트엔드와 알고리즘 공부 사이에서 고민하는 독자들에게 도움이 되었으면 좋겠습니다.
TL;DR 사실 알고리즘을 몰라도 프론트엔드 개발에는 큰 지장이 없다고 생각한다. 하지만 단순한 요구사항 구현을 넘어 효율성, 성능, 개발에 소요되는 시간까지 생각하게 된다면 결국에는 알고리즘과 자료구조를 응용하지 않을 수 없다.
그렇기 때문에 알고리즘 공부는 본인이 필요성을 느낄 때 시작하면 된다. 즉 프론트엔드 개발 생태계에 어느 정도 익숙해진 후 알고리즘 공부를 시작해도 늦지 않다.
알고리즘 공부의 목적은 최소한의 알고리즘 지식과 자료구조를 알고 있다는 것을 증명하는 것이다. 너무 과하게 파고들 필요 없이 적당히만 하자.
나의 경험상 노베이스에서는 매일 1~2시간 공부 기준 6개월 정도 하니 유의미한 성과가 나왔다. 중요한 시험이나 면접이 있다면 이를 감안해서 미리 준비하자.
프론트엔드라는 직군에 매몰되어 알고리즘을 비롯한 CS 공부 자체를 소홀히 하지는 말자. 프론트엔드 개발자이기 이전에, 우리는 개발자다.
너 혹시… 뭐 돼?
뭐 되는 건 아니고 그냥 기본만 합니다.
우선 글을 시작하기 전에, 제가 알고리즘과 관련해서 여러분께 조언을 드릴 입장인지는 모르겠다는 생각이 들어서 조심스럽습니다. 제가 백준(프로그래밍 문제를 풀고 온라인으로 채점 받을 수 있는 곳) 외에 다른 플랫폼은 안 써봐서 모르겠는데 대충 골드 1 정도까지 공부했습니다.
골드 1은 노베이스에서 6개월 동안 매일 한두 시간씩 꾸준히 문제를 풀다 보면 어렵지 않게(?) 달성할 수 있는 수준입니다. 이 정도면 골드 4, 5 난이도 문제를 30분 내외로 풀 수 있을 정도이며, 일반적인 기업에서 커트라인으로 제시하는 코딩 테스트는 무난히 통과할 수 있는 것 같습니다. 덕분에 작년에 네이버와 카카오(1차) 코딩 테스트를 통과한 경험이 있습니다.
지금부터는 제 경험을 바탕으로 프론트엔드 개발자가 알고리즘 공부를 바라봐야 할 관점을 일문일답으로 요약하고자 합니다. 아래에서 이야기할 코딩 테스트는, 전형적인 개발자 채용 과정에서 진행되는 알고리즘 유형과 난이도를 기준으로 한다는 것을 말씀드립니다.
개발자에게 알고리즘이 중요한가?
“그렇습니다.”
우선 프론트엔드라는 단어를 떼어놓고 생각해봅시다. 개발자에게 알고리즘은 어떤 의미일까요? 당연히 떼려야 뗄 수 없는 관계입니다. 알고리즘은 곧 문제 상황이 주어졌을 때 제한된 시간과 메모리 내에서 가장 효율적으로 문제를 해결할 수 있는 방법입니다.
문제를 해결하는 방법은 여러 가지가 있을 수 있지만, 모든 방법이 유용한 것은 아닙니다. 문제를 해결할 수는 있지만 정답을 얻어내기까지의 과정이 굉장히 오래 걸린다면, 이를 이용해 현실 세계에서의 문제를 풀기는 어려울 것입니다. 우리에게 주어진 시간과 자원, 그리고 인내심(…)은 유한하기 때문입니다.
따라서 똑같은 문제 상황이라고 해도 최소한의 시간, 최소한의 공간을 사용하는 알고리즘이 더 유용합니다. 또한 목적에 맞는 자료구조를 활용하면 알고리즘의 효율성을 더욱 개선할 수 있습니다. 이 덕분에 컴퓨터 이론은 과학(Science)에서 벗어나 보다 공학적(Engineering)인 가치를 갖게 됩니다.
프론트엔드 개발자에게 알고리즘 공부는 필수적인가?
“항상 그런 것 같지는 않습니다.”
하지만 프론트엔드라는 단어를 붙이면 좀 애매해집니다. 대우(contraposition)로 생각해보면, 질문이 ‘알고리즘을 배우지 않으면 프론트엔드 개발자가 될 수 없는가?’가 됩니다. 제 경험상 이 전제는 ‘항상 옳지는 않다’라는 생각이 들었습니다. 왜냐하면 그 반례를 많이 봤고, 저 역시 그 반례 중 하나였기 때문입니다.
HTML과 CSS는 외울 게 많긴 하지만, 사용 방법만 알면 되지 내부 알고리즘까지 우리가 알 필요는 없습니다. ‘자바스크립트(JavaScript)’에서 일부 로직에 알고리즘을 적용해 최적화할 수 있지만, 정렬이나 탐색 등 웬만한 기본적인 알고리즘은 이미 API가 제공됩니다. 없다면 라이브러리나 프레임워크를 쓰면 되죠. 생각보다 Node.js 생태계는 무척 잘 되어 있습니다. 즉 우리는 알고리즘 구현 자체를 알기보다는 제공되는 기능을 적재적소에 잘 써먹기만 하면 대부분의 문제를 해결할 수 있습니다.
저도 3년간 알고리즘 기초에 대한 빠삭한 이해 없이 업무를 진행했지만, 업무 중 알고리즘을 몰라서 개발에 문제가 생긴 경우는 거의 없었습니다. 오히려 성능보다는 가독성을 중요시하는 코드를 더 많이 짰습니다. 물론 재귀 함수로 트리 구조의 레이아웃을 구현하거나 계산 결과를 ‘메모이제이션(동일한 계산을 반복해야 할 경우 한 번 계산한 결과를 메모리에 정해 두었다가 꺼내서 중복 계산을 방지하는 것)’하는 것처럼 비즈니스 로직 단계에서 최적화를 진행하면 좋은 경우도 있긴 합니다.
주변에 있는 여러 개발자분의 의견도 비슷합니다. 대부분 프론트엔드 개발자도 ‘알아두면 좋긴 한데, 다른 직군에 비해 알고리즘이 크게 중요한 것은 아니다’라는 이야기를 해주셨습니다. 애초에 직군과 상관없이 실무에서 알고리즘을 쓸 일이 별로 없다는 생각도 많이 들었고요.
왜 일반적으로 프론트엔드에서 알고리즘이 중요하지 않다고 생각할까?
“크게 네 가지 이유가 있는 것 같습니다.”
알고리즘 최적화가 필요한 문제 상황 자체가 별로 없음
서버-클라이언트 구조이기 때문에 대부분의 복잡한 로직이 서버에 탑재됨
브라우저에서 대용량의 데이터를 처리하는 경우가 잘 없음
알고리즘을 추상화한 API를 쓰는 것이 효율적임
그렇다면 왜 일반적으로 프론트엔드에서 알고리즘이 중요하지 않다고 생각할까요? 제가 생각했을 때 네 가지 이유가 있는 것 같습니다.
우선 알고리즘 최적화가 필요한 문제 상황 자체가 별로 없기 때문입니다. 프론트엔드의 주요 역할은 HTML과 CSS를 이용한 퍼블리싱, 데이터 기반의 상호작용 가능한 UI 구현, 그리고 백엔드와의 HTTP 통신 정도가 생각이 나는데요. 이 작업들은 알고리즘에 대한 깊은 지식 없이도 구현이 가능합니다. 즉, 프론트엔드 자체에서 매우 복잡한 로직을 수행하는 것이 아니라면 알고리즘까지 이용해가면서 문제를 최적화해야 할 상황 자체가 자주 발생하지 않습니다. 오히려 유지보수를 위해 최적화를 포기하고 코드의 가독성이나 재사용성을 높이는 경우가 더 많습니다.
만약 복잡한 로직이 필요하다고 해도 웹은 서버-클라이언트 구조를 따르므로 대부분의 복잡한 비즈니스 로직은 서버에 탑재됩니다. 서버(백엔드)는 다량의 데이터를 안전하게 보관하고 내부 동작 방식을 숨길 뿐만 아니라 여러 요청을 동시에 처리하는 데 최적화되어 있습니다. 따라서 클라이언트(브라우저)는 서버에게 필요한 기능을 요청하고 그 결과를 받기만 하는 구조가 바람직합니다.
위의 이유로 브라우저에서는 대용량의 데이터를 처리하는 경우가 잘 없습니다. 애초에 브라우저 자체가 대용량 데이터의 처리를 위해 만들어진 것이 아닙니다. 브라우저의 역할은 사용자를 대신해 백엔드와 상호작용할 수 있는 프론트엔드 인터페이스를 실행시켜주는 것입니다. 알고리즘의 효율성은 데이터 규모(NN)가 커질수록 극적인 효과를 내는데, 브라우저의 성능이 제한적이기 때문에 알고리즘을 이용해 최적화할 수 있는 기댓값이 상대적으로 크지 않습니다.
만약 알고리즘적인 접근이 필요한 경우가 있다고 해도 브라우저나 라이브러리, 프레임워크 등에서 이를 추상화한 API를 이미 제공하며, 이것을 쓰는 것이 효율적이기 때문입니다. ‘추상화되었다’는 말은 우리가 내부 구조를 모르고도 사용할 수 있는 것을 의미합니다. 우리는 getElementById 함수가 DOM 트리 구조를 DFS로 탐색한다는 것을 알지 못해도 됩니다. 해당 API가 입력으로 ID 속성을 받고, 출력으로 DOM 엘리먼트가 반환된다는 사실 자체만 이해하고 쓰는 게 더 경제적입니다.
요약하자면, 우리가 프론트엔드에서 일상적으로 풀어야 할 문제들은 이미 추상화된 형태로 제공되는 알고리즘들의 조합으로 해결 가능하며 이것이 효율적이기 때문입니다. 따라서 추상화된 형태로 제공되는 알고리즘의 입출력만 잘 알면 실무에 있어서는 큰 지장이 없기 때문에 이런 일이 가능한 것 같습니다.
알고리즘을 실무에 써먹을 데가 없으면 굳이 배워야 할까?
“단순히 주어진 요구사항 구현뿐만 아니라 성능과 효율성까지 챙기는 개발자가 되기 위해서는 배워야 합니다.”
오늘의 핵심을 꿰뚫는 질문입니다. 개인적인 생각으로는 알고리즘을 몰라도 프론트엔드 개발이 가능하긴 하지만, 더 넓은 시야를 가진 개발자로 성장하기 위해서는 알고리즘 공부가 필요하다고 생각합니다. 생각의 규모를 조금 더 확장해 생각해본다면, 우리가 왜 CS를 공부해야 하는지에 대한 답과도 일맥상통합니다.
그렇게 생각하는 첫 번째 이유는 알고리즘과 자료구조의 조합을 이해하고 있으면 우리가 실제로 해결하고자 하는 문제 상황에 최적화된 구조를 쉽게 떠올리고 설계할 수 있기 때문입니다. 흔히 이야기하는 ‘컴퓨팅적 사고(Computational Thinking)’가 바로 이것입니다.
만약 여러분이 크기가 매우 큰 배열에서 특정 값을 찾아야 할 때 Array.find() 를 사용할 수도 있지만, 그 값이 정렬되어 있다면 이분 탐색으로 값을 찾는 것이 훨씬 더 빠릅니다.
를 사용할 수도 있지만, 그 값이 정렬되어 있다면 이분 탐색으로 값을 찾는 것이 훨씬 더 빠릅니다. 만약 여러분이 SNS 웹 애플리케이션을 기획한다고 할 때, 각 인물 사이의 관계를 추상화하기 위해서 그래프 이론과 그래프 탐색 알고리즘을 사용할 수 있습니다.
만약 여러분이 파일 탐색기 같은 중첩 가능한 UI 구조를 만들어야 할 때는 트리 자료구조와 분할 정복 기법을 이용해 컴포넌트를 설계할 수 있습니다.
한 번 서버에서 불러온 데이터를 메모이제이션하는 방식으로 동적 프로그래밍 기법을 적용할 수 있습니다.
이를 잘 이용한다면 소프트웨어 개발 시간을 줄이면서 성능과 효율성을 높일 수 있고, 수준이 매우 뛰어나다면 비즈니스적 성과로도 이어질 수 있습니다.
두 번째 이유는 환경이나 플랫폼의 변화에도 흔들리지 않는 개발자가 될 수 있기 때문입니다. 우리는 알고리즘이 추상화된 형태의 API 또는 라이브러리를 많이 쓰곤 합니다. 하지만 그것만 가지고 “알고리즘을 이해했다”라고 이야기할 수 있을까요? 정확하게 이야기하자면 우리는 다른 개발자들이 만들어 놓은 기반 위에서 동작하는 API를 그저 사용한 것뿐입니다.
이러한 개발자들은 특정 환경과 특정 플랫폼에 단단히 종속될 수 있다는 점에서 위험합니다. 원리를 이해한 것이 아니라 기능을 사용했기 때문입니다. 따라서 환경이 바뀌거나 본인이 익숙하지 않은 플랫폼에서는 적응에 상당한 어려움을 겪을 것입니다.
만약 여러분이 JavaScript Web API에서 기본으로 제공되는 getElementById 를 파이선(Python)에서 구현해야 하는 일을 맡게 됐다면? Python에서 기본 제공되는 자료구조인 힙, 우선순위 큐 등의 자료구조를 JavaScript에서 구현해야 하는 일을 맡게 된다면? 게다가 만약 내가 필요한 기능의 라이브러리를 사용할 수 없는 환경이라면?
언어 자체가 익숙하지 않다면 문법이 헷갈릴 수 있겠지만 이건 큰 문제가 아닙니다. 문법이야 배우면 되니까요. 알고리즘과 자료구조에 대한 이해만 있다면, 환경과 플랫폼에 상관없이 효율적인 문제 해결 방법을 제시할 수 있다는 사실이 더 가치 있는 것입니다.
마지막 이유는 모든 응용 기술들은 결국 기초 기술을 기반으로 만들어지기 때문입니다. 결국 하고 싶은 이야기는 ‘어느 정도 기초에 충실하자’라는 겁니다. 모든 개발자는 본인이 사용하고 있는 기술 그 자체에서 이해를 멈추는 것이 아니라, 그것을 떠받치고 있는 기술을 이해하기 위해 노력해야 할 필요가 있습니다. 그래야만 본인의 기술을 더 잘 활용할 수 있습니다.
비즈니스 로직이 어떻게 알고리즘과 자료구조로 추상화되며, 그렇게 작성한 React와 TypeScript 코드가 어떻게 JavaScript로 어떻게 컴파일되고, 이 JavaScript는 HTML, CSS와 함께 어떻게 브라우저에서 동작하는지, 그 브라우저는 어떻게 운영체제에서 관리되며, 운영체제는 어떻게 다양한 호스트에서의 네트워크 연결을 중재하는지도 생각해봐야 합니다.
이런 과정들이 불필요해 보이나요? 우리가 쉽게 사용하는 기술들은 공짜로 얻어진 것이 아닙니다. 기반이 되는 모든 기술을 이해하자는 것이 아닌, 최소한의 지식 정도는 알고 있자는 것입니다.
그렇다면 기업은 왜 알고리즘으로 코딩 테스트를 보는가?
“기업 입장에서 수많은 지원자의 기본기를 검증할 수 있는 가장 경제적인 방법이기 때문입니다.”
위에서 뭔가 거창하게 이야기했지만, 사실 기업 입장에서 저렇게 사명감(?) 넘치는 취지로 알고리즘 코딩 테스트를 보는 것은 아니라고 생각합니다. 그 이유는 알고리즘 코딩 테스트가 기업 입장에서 매우 경제적인 평가 방법이기 때문입니다.
물론 기본기를 평가하는 목적도 있지만, 알고리즘 테스트를 도입하면 지원자들의 점수를 객관적으로 수치화할 수 있습니다. 덕분에 점수에 따라 지원자들을 일렬로 줄 세울 수도 있고, 무의미한 실력의 지원자를 쉽게 걸러낼 수도 있습니다. 또한 빠르면 한두 시간 내에 평가가 끝나기 때문에 내부 구성원들의 리뷰가 필요한 과제 전형에 비해 리소스를 덜 쓰기도 합니다. 특히 어느 정도 규모가 있는 회사일수록 지원자는 많은 반면 인원은 신중하게 뽑기 때문에, 면접 전까지는 점수로 커트하려는 목적도 있습니다.
알고리즘은 테스트 케이스 통과 여부에 따라 정답과 오답이 명확하게 드러나고, 효율성을 수치화하기에도 적합하기에 코딩 테스트의 평가 기준으로 사용되고 있는 듯합니다. 사실 기업 입장에서도 모든 지원자의 편의를 봐주고 코드를 읽어볼 수는 없는 노릇이니, 이해는 갑니다.
하지만 실무용 코드와 알고리즘 문제 해결을 위한 코드는 다르지 않은가?
“맞습니다만, 문제 접근 방식을 평가하기 위한 목적도 있습니다.”
목적 자체가 다르긴 합니다. 단순히 일회성으로 정답을 찾기 위한 코드, 그리고 유지보수성과 재사용성을 고려하면서 작성한 코드는 분명 다릅니다.
그래서일까요? 최근에는 일부 기업에서 코딩 테스트 대신 과제나 포트폴리오를 더 많이 보는 전형도 생기고 있다고 합니다. 하지만 채용 과정을 진행하는 것은 전적으로 기업의 선택이기 때문에, 어떤 것이 정답이라고 이야기할 수는 없습니다. 구글에서는 아직 알고리즘으로 코딩 테스트를 본다고 합니다. 기업의 입장에서 변호하자면, 알고리즘 코딩 테스트를 통해 효율성뿐만 아니라 문제 접근 방식에 대한 평가도 진행할 수 있습니다.
면접에서 코딩 테스트 때 제출한 코드를 리뷰하는 경우도 꽤 있습니다. 또한 라이브 코딩 테스트 같은 경우에는 면접관이 일부러 요구사항이 모호한 문제를 주기도 합니다. 따라서 지원자는 요구사항을 명확히 하기 위한 질문을 면접관에게 해야 하고, 이렇게 커뮤니케이션하는 과정에서 문제 접근 방식을 평가할 수 있습니다.
만약 여러분이 가고 싶은 회사에서 알고리즘으로 코딩 테스트를 본다면? 뭐, 조금 냉정하게 들리겠지만, 포기하거나 공부해서 시도하거나 둘 중 하나밖에 없습니다. 사실 이게 불합리하다고 느껴진다면 과제로 검증하는 회사를 지원해야 합니다.
그렇다면 알고리즘 공부는 언제 시작하면 좋은가?
“본인이 필요하다고 느껴질 때 하면 됩니다.”
저처럼 각종 교육 과정이나 채용 전형으로 요구되기 때문에 미리 준비해둘 수도 있고, 그냥 본인이 더 나은 개발자가 되고 싶어서 공부할 수도 있습니다. 자투리 시간을 생산적으로 활용하고 싶을 때도 틈틈이 공부하기 좋습니다. (뭐 군대에 있을 때라던가…)
개인적으로는 완전 노베이스 기준 매일 1~2시간 공부 기준 6개월 정도 했을 때 웬만한 알고리즘 코딩 테스트는 통과했던 것 같습니다. 중요한 시험이나 면접이 있다면 이를 감안해서 미리 준비할 필요가 있을 겁니다.
어디까지 공부하면 되는가?
“목표에 따라 다른 것 같지만 취업을 위해서라면 기본기만 챙기면 충분합니다.”
저는 아래 범위를 위주로 공부했습니다.
수학, 조합론, 기하학
브루트포스, 그리디
분할 정복, 재귀
투포인터
자료구조(스택, 큐, 우선순위 큐, 힙, 해시, 트리, 유니온 파인드…)
이분 탐색
다이나믹 프로그래밍
그래프 이론, 그래프 탐색(BFS, DFS, 백트래킹, 다익스트라, 플로이드-워셜…)
비트마스킹
시뮬레이션, 구현
개인적으로 알고리즘은 설계를 쉽고 효율적으로 만들어주는 개발자의 기초 체력이라고 생각합니다. 물론 많이 알수록 좋지만 올림피아드에 나가지 않는 이상 알고리즘 그 자체에만 매달리는 것은 그리 효율적이지는 않다고 생각합니다. 기본이라는 기준이 대부분의 기업 코딩 테스트에서 요구하는 수준인 것 같고, 그 이후로는 본인이 전문성을 가져야 하는 직군의 공부를 더 하는 게 좋다고 생각합니다.
그렇기 때문에 만약 프론트엔드 개발자가 되고 싶긴 한데 프론트엔드 자체에 대한 지식이 부족하다면, 이 경우에는 알고리즘보다는 프론트엔드부터 공부하는 걸 추천합니다. 즉 프론트엔드 개발 생태계에 어느 정도 익숙해진 상태에서 알고리즘 공부를 병행하는 방식이 괜찮을 것 같습니다.
마무리
적다 보니 내용이 많이 길어졌습니다. 건조하게 ‘알고리즘 공부는 당연히 중요하다’라고 하기보다는 좀 더 실무적인 입장에서, 그리고 프론트엔드 개발자의 관점에서 글을 한 번 주절주절 써봤습니다. 사람에 따라 의견이 다를 수도 있는데, 건전한 피드백과 토론은 언제든 환영이니 댓글 남겨주시기를 바랍니다.
그리고 글을 마무리하기 전에 덧붙여봅니다. 프론트엔드라는 직군에 매몰되어 알고리즘을 비롯한 CS 공부 자체를 소홀히 하지는 맙시다. 프론트엔드 개발자이기 전에, 우리는 개발자니까요.
[ 강의 후기 ] 자바스크립트 알고리즘 문제풀이(코딩테스트 대비) – 김태원 (내돈내산)
728×90
📍 [ 강의 후기 ] 자바스크립트 알고리즘 문제풀이(코딩테스트 대비) – 김태원
✏️ 서론
학부시절 JAVA 를 잠깐 배웠지만 클래스가 뭐고 인스턴스가 뭔지 수업을 들어도 전혀 감을 잡지 못해 손에서 놔버렸다. 대학교 졸업 후 2년 4개월의 군 복무를 마치고 나서 5개월 뒤인 20. 12. 22 부터 취업을 하겠다는 다짐과 함께 프로그래밍 관련 기억이 모두 삭제된 채 코딩 테스트를 준비했다. 그로부터 3~4개월이 지났을 때 프론트엔드로 가려면 코딩 테스트의 언어로는 python 보다 이제부터 평생 달고 살아야 할 javascript 로 해야겠다는 마음을 먹었다. python 으로 공부를 하면서 2~3개 정도 스타트업의 코딩 테스트를 치렀는데 모두 python 은 지원이 되지 않고 JS 로만 응시가 가능했다. JS 로 새로 시작할 때 python 에서 사용하던 몇몇의 문법은 JS 에서 지원하지 않았다. 특히, 배열이나 문자열의 값을 뒤집는 [::-1] 은 많이 사용했었는데 JS 는 지원을 하지 않아서 아쉬웠다.
✏️ 본론
5개월 정도 코딩 테스트를 독학으로 공부하다 보니 막히는 부분도 많았다. 이런 문제는 어떻게 논리적으로 접근해야 하지?라는 생각이 많이 들었고, 결론적으로 계속 같은 난이도의 문제만 골라 풀고 있는 내가 정체되어 있는 듯한 느낌을 받았다. 그래서 알고리즘 강의를 듣고 싶다는 생각을 했고 몇몇의 사이트를 찾아봤지만 대부분의 강의는 c++ , python , java 로만 진행했다. ( JS 도 포함시켜주세요 🥲 🥲 ) 우연히 인프런에서 강의를 찾아보는데 JS 로 진행하는 강의가 있었는데 김태원 선생님의 자바스크립트 알고리즘 문제풀이(코딩테스트 대비)라는 강의였다. 무료는 아니었고 가격은 약 6만 원인데 할인받아 치킨 3번만 참으면 되는 가격인 4만 8천 원 정도에 구매했다. (4만 8천 원이면 나만의 백수 환율 적용 시 48만 원이다. (백수 환율 = 기존 금액 * 10)) 초반에는 백준에서 몇몇 풀어본 문제들이 나와서 풀 만 했는데 나중에는 난이도가 조금씩 올라가서 어려웠다. 강의에서 가장 마음에 들었던 부분은 알고리즘의 대략적인 개념만 알고 실제 문제에는 적용하지 못한 알고리즘들 parametricSearch , twoPointer , slidingWindow , LIS , knapsack 등을 문제를 통해 배우니까 개념과 이해가 무척 잘됐다. (이전에 현대카드 코딩 테스트 봤을 때 LIS 를 사용하는 문제가 나왔는데 그때는 구현할 줄 몰라 내 마음속으로만 풀었다..) 여하튼 평일 하루에 2~3문제씩 총 84문제를 꾸준히 푼 결과 2개월 정도 걸렸다. (백준에서 227문제를 풀었는데 이것까지 합하면 약 300문제 넘게 풀었다.) 무엇보다 문제를 풀고 나서 그냥 넘어가는 것이 아니라 블로그에 문제들을 포스팅하고 노션에도 관련된 내용들을 기록하니까 기억에 잘 남는다. 그리고 어쩌다 보니 앨리스 SW 엔지니어 트랙에도 운이 좋게 합격했는데 이 강의를 들었기 때문에라는 생각이 강하게 남는다.
✏️ 결론
앞으로의 계획은 프로그래머스 2단계 문제들을 모두 푸는 것이다. 이 강의가 어떤지 구글링을 하고 계신 분들(계속 같은 난이도만 골라 풀고 계신 분, 이제 막 코딩 테스트를 시작했는데 어떤 알고리즘을 배워야 할지 고민하시는 분, 코딩 테스트에 사용하는 `JS` 기초적인 문법을 배우고 싶으신 분)에게는 꼭 추천해주고 싶은 강의다. (너무 좋다고만 작성해서 인프런에서 후원받고 작성한 글 같은데 지극히 내 돈 내산이다) 질 좋은 강의, 질문글을 남기면 바로바로 대답해주시는 김태원 선생님께 감사의 말씀을 전하고 싶다. (컨트럴 ~ 에프 오!는 머릿속에 자꾸 남는다.)
끝으로 개인적인 견해로 수많은 알고리즘 강의를 듣는다고 해도 직접 다양한 문제를 풀어봐야 한다고 생각한다. 나에게는 아직 넘어야 할 산이 많다. 하지만 여기에서 포기하지 않고 절차 지향적인 사고, 논리적인 사고의 감을 잃지 않고 매일매일 알고리즘 문제를 풀면 대기업 코딩 테스트는 거뜬하게 통과할 수 있을 거라 믿는다.
반응형
JavaScript (JS) Algorithms and Data Structures Masterclass
국내에서 찾아보기 힘들었던 JavaScript 기반 알고리즘 & 자료구조 강의!
컴퓨터 과학에서 가장 핵심적인 12개의 알고리즘, 10개의 자료구조를 직접 내 손으로 구현하며 학습!
85개의 문제를 직접 풀어보며 코딩 테스트, 기술 면접 완벽 준비
———
[전세계 상위 1% 개발자들이 인정한 알고리즘 & 자료구조 강의]이 강의는 강사님이 해외 유명 코딩 부트캠프에서 가르쳤던 내용을 중심으로 구성되었습니다. 실제 이 강의를 들은 학생들 중 다수가 우리가 알만한 IT 기업(구글, 아마존, 페이스북 등 )의 기술 면접을 통과하였고 6개 중요 개발자 직업에 취업하였습니다.
[만의 특별한 학습 방법] 이 강의는 온라인 수강에도 높은 학습 효과를 낼 수 있도록 특별한 학습 방법을 마련했습니다.
쌍방향 강의 – 해결책을 제공하기 전에 먼저, 스스로 문제를 풀어볼 기회 를 제공합니다.
모든 문제는 완벽한 솔루션을 설명한 파일과 동영상 을 포함하고 있습니다
도움이 될만한 비법과 요령도 포함되지만, 어떤 문제에도 접근 가능한 방법을 개발 하는데 집중합니다.
이 강의는 이해를 돕기 위한 애니메이션과 멋진 다이어그램이 포함되어 있습니다!
JavaScript 알고리즘 & 자료구조 학습,
더이상 미루지 말고 이 강의로 시작하세요!
[전 세계 100만 수강 강사, Colt의 한마디]이 코스는 몇 개월의 컴퓨터 과학과 인터뷰 준비 자료를 바탕으로 제작되었습니다.
먼저, 이 강의는 빅오 표기법 을 사용해 코드의 시간과 공간 복잡도를 분석하는 방법으로 시작합니다.
그 다음, 재귀 의 입력과 출력을 살펴보고, 어려운 코딩 문제를 풀기 위한 5단계 접근법을 배울 것입니다.
또한, 일반적인 프로그래밍 패턴을 배우고 인기있는 검색 알고리즘 을 구현해 볼 것입니다.
6개의 다른 정렬 알고리즘 인 버블, 선택, 삽입, 퀵, 합병, 기수 정렬을 작성해 보고 백지 상태에서부터 연결 목록, 트리, 힙, 해시 테이블, 그래프 등을 포함하는 우리만의 자료 구조 를 구현할 것입니다.
트리와 그래프 순회를 배우고 다익스트라의 최단 경로 알고리즘 을 살펴볼 것입니다.
이 코스는 또한 동적 프로그래밍에 대해서도 다루고 있습니다.
강의를 들으시고 강의와 관련하여 궁금하신 점은 무엇이든 Q&A에 남기실 수 있지만, 꼭 영어로 남겨주세요. 그래야 답변을 드릴 수 있습니다. 🙂
개발자 스킬을 레벨업시키고 싶나요? 바로 오늘 등록하세요!
강의에서 만나요,
– Colt
JavaScript로 코딩테스트 준비하기 (초보자 편)
realhee
case 1. 입력값 정제가 최우선!
가장 먼저 문제에서 나온 input 입력을 잘 정제하고 , 로직을 짜기 위한 적절한 형태로 parsing 하기
, 로직을 짜기 위한 적절한 형태로 하기 출력값 full string 은 키워드(”
”)로 split() 을 한다던가 / +변수 또는 Number()로 숫자로 형변환 해준다던가 / map() 을 써서 array 변환하기라던가.. 기본적인 연산 API에 익숙 해질 때까지 연습하기
은 키워드(”
”)로 을 한다던가 / 또는 Number()로 숫자로 형변환 해준다던가 / 을 써서 array 변환하기라던가.. 기본적인 해질 때까지 연습하기 블로그들을 참고하면 고수들의 심플한 코드가 많은데, 초보들은 너무 어려울 것이다.. 추천하는 방법은 입력 받자마자 console.log() 찍어보는 것. 더 명시적으로 문제 힌트를 얻을 수 있다.
그럼 이 값에 난 뭘 해줘야할까? 그다음엔? → 차근차근 값을 직접 console.log()로 값을 확인해보면서 푼다.
case 1-1
처음에 solution() 함수를 만들고 입력값이 어떤식으로 들어오면 좋겠는지, 미리 주석으로 적어보기
case 2. 문제풀이 방법?
막히면 답을 금방 봐라! 너무 길게 고민하다보면 쉽게 지친다. 구글에 검색해서 로직 패턴을 익히자.
구글에 검색해서 로직 패턴을 익히자. 주요 자바스크립트 배열 메소드 : map, filter, reduce, indexOf …
배열 함수에 익숙해지지 않은 초보자라면 반복문(for) 을 적극 활용해라.
1 모든 알고리즘 테스트는 시간이 한정되어 있다.
2 머리 속 생각을 한 번에 구현하는게 굉장히 중요하다.
3 문제를 풀 때 한 번에 통과하지 못하면 한 번에 통과할때까지 코드 다시 지우고 새롭게 짜는걸 반복해보자.
–> 코드 간결화 & 자주 나오는 패턴 및 알고리즘 실수 방지
TODO
알고리즘 테스트 공부방법
어제 처음으로 신입 코딩테스트를 봤습니다. (프론트앤드 개발자 지망)
코테 사이트에서 준비를할떄 보면 바이너리,이진트리검색, DFS 이런식으로테마가 나눠져있잖아요.최근 코딩 테스트 준비를할때, 다는 못보고 그리디랑, 배열, 해시맵 정도만 풀었어요.
그리고나서 코테 보는데 어떻게 풀어야할지 모르는문제가 나와서.. 아마 내가 보지 못했던 링크드 리스트에서 나온거라 생각하고 오늘부터 그쪽 풀려고 공부하고, 유튜브로 강의를 찾아보는데
개발자 친구(보안쪽 개발자) 한테 말하니까.. 사실 알고리즘 보다 수학이 먼저라고 알고리즘 몰라도 수학으로 풀수있다는 말을 해주더라구요.
그말들으니 강의듣는건 멈추고, 일단 문제나 무작정 풀어봐야하나 급 궁금해서 질문올리게 되었습니다.+ 또 찾다보니 자바스크립트 강의는 별로 없어서… 자바스크립트 쪽은 알고리즘 깊이 안들어가도되나싶고 .. 궁금하네요!
자바스크립트 알고리즘 공부 / javascript tag
반응형
첫번쨰 코드
이 코드는 span 태그를 가져와서 읽어오지 않기 때문에 잘못된 접근이라 할 수 있다
하지만, 답은 정확하게 나타내므로 50% 정확한 답이다
수정된 코드
코드 다이어트 순서 1
코드 다이어트 순서 2
참고하기
코딩은 항상 최고의 다이어트는 선택이 아닌, 필수!
개념 공부
innerHTML 같은 경우 태그
같이 시작과 끝이 있는 태그에서 사용할 수 있는데
input 태그 같은 경우, 태그가 1개라 value 를 이용해야한다
사용 빈도는 innerHTML 보다 value 가 더 사용 빈도수가 높다
복수데이터
데이터를 가져왔는데 , collection(3)
한개가 아니라 여러개의 데이터가 넘어왔다는 뜻
실제 데이터 타입은 다른데, collection과 array의 차이점 분석하기
elements 요소 접근
= 을 쓰면 어떤 값을 넣어주냐 안넣어주냐의 차이
이전 실습 2는 안에 있는 문자값은 String 값이므로 형 변환이 필요하다
input 태그는 요소로 작용하는게 아니라, value 값을 통해서(속성을 이용해서) 값을 가져온다
복수개의 데이터를 가져올때는
body 를 입력하면
1개를 가져온다
요청 자체가 복수개 이기떄문에, 1개여도 index 값을 지정해서
[0] 이렇게 불러와야한다.하드 코딩 :
코딩을 통해서 디자인을 변경하는 것,
빠르게 코딩 가능,
코드가 복잡해짐
한번더 클릭했을때 다른색이 나오게 하고 싶을때,
class 값만 바꿔서 다음과 같이 쓸 수 있다.
css : 실제 파일에 영향을 주지는 않음
바닐라 JS 가 기본으로 배우는 것이다
br태그 사용법
단순히 문장을 띄울떄 사용한다
함부로 쓰는거 아님!!
속성에 접근하는 예
사진 변경하기~
이미지 주소 복사!!
반응형
키워드에 대한 정보 자바스크립트 알고리즘 공부
다음은 Bing에서 자바스크립트 알고리즘 공부 주제에 대한 검색 결과입니다. 필요한 경우 더 읽을 수 있습니다.
이 기사는 인터넷의 다양한 출처에서 편집되었습니다. 이 기사가 유용했기를 바랍니다. 이 기사가 유용하다고 생각되면 공유하십시오. 매우 감사합니다!
사람들이 주제에 대해 자주 검색하는 키워드 자료구조와 알고리즘 그리고 코딩테스트?
- 자료구조
- 알고리즘
- 코딩 테스트
- 컴퓨터 공학
- 자료구조 공부
- 알고리즘 공부
- 프론트엔드
- 백엔드
- 웹 개발자
- data structures and algorithms
- data structures
- algorithms
- yt:cc=on
- 알고리즘 대회
- 코딩 테스트 준비
자료구조와 #알고리즘 #그리고 #코딩테스트?
YouTube에서 자바스크립트 알고리즘 공부 주제의 다른 동영상 보기
주제에 대한 기사를 시청해 주셔서 감사합니다 자료구조와 알고리즘 그리고 코딩테스트? | 자바스크립트 알고리즘 공부, 이 기사가 유용하다고 생각되면 공유하십시오, 매우 감사합니다.