개발자
안녕하세요 저는 개발자가 되고 싶은 대학생입니다. 저는 프론트 개발자가 되고싶어서 리액트, 넥스트 등 여러 라이브러리나 프레임워크를 배우고 있는데 제가 프론트 개발을 할 때는 정말 이해도 잘되고 구현도 상상하는대로 잘 되는거 같은데 막상 지금 학교에서 자바프로그래밍, C프로그래밍 들을 때는 주로 수업에서 알고리즘 푸는 문제가 많이 나오는데 그런 알고리즘 문제들 때문에 너무 쩔쩔맵니다.. 알고리즘은 구현도 잘 못하고 이해도 잘 안되고.. 매주 이 수업들때문에 머리가 아픕니다.. 그치만 개발할 때는 진짜 180도 달라지는거 같네요.. 오히려 개발 할때가 진짜 힐링 되는거 같습니다.. 저는 프론트 말고도 백도 배워서 전체적으로는 풀스택인데 주로 프론트를 다루는 개발자가 꿈입니다.. 하지만 제가 이러한 알고리즘이 너무너무 약해서 문제입니다.. 개발자가 되고 싶지만 이런 문제가 있습니다.. 이렇게 알고리즘이 너무 약하면 개발자가 되기엔 많은 문제가 생길까요?..여러분들의 조언이 필요하네요.. 어떡하면 좋을까요..
답변 7
인기 답변
삭제된 사용자
2024년 04월 17일
안녕하세요. 현업인이었던 적은 없지만 원론적인 얘기를 해드릴까 합니다. 말씀하시는 문제의식 - 알고리즘이 약한 것이 개발자가 되기에 많은 문제가 생기는가 -은 컴퓨터 이론을 공부하기 위해 대학원을 온 저에게도 굉장히 중요한 문제였습니다. 알고리즘이 실제 개발에서 의미가 없다면 스스로에 대한 동기부여가 부족해지니까요. 결론부터 말씀드리면 문제가 될 수 있다고 생각합니다. 공부 방법은 천차 만별이고 사람마다 스타일이 달라서 질문자님과 좀더 얘기가 필요할 것 같습니다. 이하는 알고리즘의 효용에 대한 얘기입니다. -- 근시안적으로는 요즘 대부분의 기업이 치루는 코딩테스트를 통과하기 어렵다는 문제가 있을 겁니다. 제가 기억하기로 기업 코딩테스트는 소위 말하는 Solved 등급 기준 골드 상위 문제까지 출제됩니다. 그리고 해당 집합의 문제들은 알고리즘 지식을 요구하는 경우가 더러 있습니다. 좀더 본질적으로 접근하자면 유용한 도구를 하나 버리고 시작하는 것과 같다고 생각합니다. 요즘은 라이브러리들도 잘되어있으니 없다고 개발을 못하진 않겠죠. 하지만 효율적인 프로그램을 만들기 위해서는 그러한 라이브러리를 이해하기 위한 기반이 필요합니다. 또한, 마주하는 모든 문제들을 기존의 라이브러리로 해결할 수 없습니다. 다양한 상황이 있겠는데요. 예를 들면, 제한된 하드웨어 리소스 안에서는 라이브러리의 사용이 제한적일 수 있습니다. 마지막으로 좀더 본질로 들어가보자면, 알고리즘을 버린다면 우리는 마주하는 문제들을 해결하는 도구 하나를 잃게 됩니다. 우리는 실제 세계의 문제들을 컴퓨터로 해결하고자 합니다. 그러므로 문제를 어떤 이산적인 형태로 모델링하여 해결하게 됩니다. 그리고 그 모델링한 문제를 해결하는 방법들이 알고리즘입니다. 가령, 욕설을 필터링해야 하는 상황이라고 해볼까요? 우리에게는 필터링할 욕설들이 주어집니다. 이 문제는 어떤 문자열(사용자의 텍스트)에서 어떤 부분문자열들(욕설들)이 있는지 찾는 문제로 모델링할 수 있겠죠. 단순하게는 텍스트의 한 문자를 읽을 때마다 '그 문자에서 시작하는 텍스트의 일부'가 욕설들에 해당하는지 확인할 수 있겠죠. 이때, 입력 문자열의 길이가 n, 욕설의 최대 길이가 m, 욕설의 개수가 k라고 한다면 최대 n*m*k개의 문자를 확인해야 할 겁니다. 잘 알려진 선형시간 문자열 매칭 알고리즘인 KMP를 사용하면, k*(n+m)번의 연산이 필요할 것이구요. 여러 문자열을 찾는 알고리즘인 Aho-Corasick automata를 사용한다면, n+m*k번의 연산이면 충분합니다. (단, 제가 말씀드린 연산 횟수는 실제가 아닌 점근적 분석입니다.) 그리고 알고리즘 공부와 더불어 연습 문제들을 풀어본다면, 자신의 문제 해결 능력을 키울 수 있겠죠. 알려진 알고리즘들을 체화시킬 수도 있을 것이고, 잘 알려진 알고리즘 설계기법들을 활용하는 등을 통해 알고리즘 설계능력 자체도 키울 수 있을테니까요. 도움이 되셨길 바랍니다.
인기 답변
알고리즘... 못해도 개발자는 될 수 있지만... 그저그런 개발자... 어려운 문제가 발생했을 때 해결할 수 없는 개발자가 될 가능성이 높습니다. 알고리즘이 어려운 건 누구에게나 마찬가지 입니다. 꾸준히 도전하세요. 기초가 중요합니다. C의 언어 코드가 컴파일러에서 어떻게 내부에서. 동작하는지 알고리즘에 기초가 되는 자료구조를 알아야 하고 컴퓨터구조 네트워크 객체지향 데이터베이스 이정도는 기초학문으로 한번은 알고 가셔야 됩니다. 전공자를 기업에서 찾는 이유는 이걸 이수한 사람과 모르는 사람의 차이가 협업에 문제를 해결하는데 차이를 보이기 때문입니다. 내가 어떤 포지션으로 바뀌더라도 적응하고 문제를 해결하면 다음 레벨로 빠르게 올라가는 사람들 소위 억대연봉을 찍는 사람들 실력자라 불리는 사람들은 결국 기초를 어떻게 쌓았느냐에서 갈립니다.
안녕하세요 현업 개발자입니다. 알고리즘은 분야가 어딘지에 따라 쓰이는곳이 있고 안쓰이는곳이 있습니다. 어플리케이션 레벨의 개발자들이 코드작성할때 알고리즘을 직접 작성하고 적용하는경우는 흔치 않습니다. 이미 사용하기도 편하고, 최적화되어있는 패키지들이 매우 많고, 언어 자체에서도 지원해주는경우가 많거든요 다만 어플리케이션 레벨의 개발자도 알고리즘을 공부해야하는 이유는 있습니다. 복잡한 문제를 코드를 이용해 해결하는건 매우 중요합니다. 코드를 작성할때건, 현업에서 마주치는 복잡한 상황을 해결할때에도 알고리즘을 통해 문제해결을 숙달시켜놓으면 많은 도움이 되거든요 퍼포먼스가 다릅니다. 보약먹는다고 생각하고, 재미를붙여보시길 바랍니다.
안해도 충분히 개발자 될 수 있습니다. 알고리즘 공부를 통해 취업시 얻을 수 있는 실질적 이득은 코딩테스트를 보는기업을 지원할때 유리하다. 대충 이정도라고 생각합니다. 그냥 안해도 충분히 취업가능하고 알고리즘 때문에 고통받고 개발자의 길을 의심하게 된다면 그냥 넘겨버리세요. 그래도 알고리즘을 꾸준히 하게된다면 구현능력이 올라가고 멘탈도 단련됩니다. 적당히 득과 실을 생각해서 공부하시는 것을 추천드려요.
시중에 나온 쉬운 알고리즘 책을 몇 권 읽어보시길 추천 드립니다. 보통 어려운 알고리즘을 쓰는 분야는 누구나 가고 싶어하는 좋은 회사이고, 대부분은 수학 공식 쓰듯 라이브러리를 잘 호출 할 줄 알 면 됩니다. 알고리즘 학습 속도는 개인차가 있으니 아주 얇고 쉬운 그림책 레벨의 알고리즘책을 여러 권 보시길 추천 드립니다. 저자마다 쉽게 설명하는 부분이 다르니 한 권만 보고 고통 받지 마시고, 여러권을 사서 읽으면 도움이 됩니다.
Dfs는 간혹가다가 씁니다 주로 부모 자식 관계를 가진 자료구조 주로 디렉토리 검색할때 , 그외는 사용한 기억이 없네요 스케쥴링 할때 우선 순위 큐를 쓸수도 있지만 코딩 시험볼때나 쓰고 주로 db를 이용해서 이용하죠 알고리즘 실제 업무에서 쓸 일은 거의 없습니다 다만 공부를 하다보면 내코드가 좋아 지는건 맞습니다 코드도 짧아지고 유지보수성도 좋아지고 이미 불러온데이터는 캐싱처리 하는 방법이나 동적 계획법을 사용하면 확실히 성능은 좋아지죠 근데 필수 아닙니다 몰라도 됩니다 개념만 알고 gpt한테 코딩은 맞기면 되니 글쓰고 보니 알긴 알아야 겠네요 알아야 gpt한테 물어볼수 있으니 얇게 공부하세요
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 04월 17일
알고리즘의 어려움을 느끼는 것은 매우 보편적인 상황입니다. 한번에 모든 것이 이해되지는 않지만, 지속적인 연습과 경험이 답입니다. 몇 가지 제안을 해드리겠습니다. 1. 여기저기 넓게 학습하느라 집중도가 떨어지게 되면 결국 결과를 내기 어렵습니다. 하나의 프로그래밍 언어에 초점을 맞추어 깊게 공부해보세요. 자바와 C 등 알고리즘 문제 풀이에 적합한 언어로 시작하는 것이 좋습니다. 2. 무작정 알고리즘 문제를 풀기보다, 기본적인 자료구조 및 알고리즘 개념을 이해하기 위한 시간을 갖는 것이 중요합니다. 3. 알고리즘의 복잡성 때문에 혼자서 해결하기 어렵다면, 다른 사람들과 같이 문제를 풀며 생각을 나누는 스터디를 추천합니다. 함께 하는 과정에서 다른 관점을 배울 수 있으며, 동료들로부터 도움 받으면서 자신의 문제 해결 능력도 향상될 수 있습니다. 4. 다양한 연습 문제 사이트를 활용해보세요. 예를 들어, LeetCode, 백준 등의 사이트에서 수많은 문제를 찾아 풀고, 해답 또한 확인할 수 있습니다. 5. 개발도 좋아하고 잘하시는군요! 이 스킬을 살려 프로젝트를 진행하며 실제 개발에서 알고리즘이 어떻게 적용되는지 보는 것도 유익합니다. 실제 코드에 적용하는 과정에서 알고리즘 공부의 필요성과 중요성을 체감하게 될 것입니다. 기억하세요, 모든 개발자는 처음에 알고리즘 문제에 부딪히며 어려움을 겪었습니다. 지금 당장 완벽하게 이해하지 못한다 해서 너무 걱정하지 마세요. 조급해하지 않고 한 걸음 한 걸음 나아가다 보면 언젠간 그림이 그려질 날이 올 것입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!