개발자
안녕하세요. 저는 지방 4년제 안드로이드앱 개발자를 희망하는 졸업을 앞둔 학생입니다. 현재 코틀린으로 알고리즘을 공부하고 있는데, 정말 자신이 의심될 정도로 알고리즘이 약한 것 같습니다. 현재 취업공고만 보더라도 입사과정에 알고리즘이 포함되어 있고, 싸피지원을 위해서라도 열심히 하고자 하는 마음이 있습니다. 하지만 현재 한달 째 진행중인데, 한없이 부족하다 라는 생각이 듭니다. 보통 골드 5 ~ 실버1 문제를 한시간정도 고민하셔서 푼다고 하시던데, 저는 정말 2-3시간을 보더라도 예제 출력은 커녕 코드 구조를 짜는 것 조차 쉽지가 않습니다. 풀이를 보고나서야 조금 이해가 되기도 합니다. 물론 남들과 비교하는건 좋지 않지만, 두서없이 글을 쓴 것 같습니다.. 현재 공부방법은 누적합, dfsbfs, 트리 순회 순서로 하고 있습니다. 조언 부탁드리겠습니다...
답변 2
삭제된 사용자
2024년 04월 29일
안녕하세요. 주변에 들은 얘기들을 기준으로만 말씀드리고자 합니다. 참고만 하시길 바랍니다. 일단 알고리즘과 PS(Problem solving, 코테) 연습은 크게 두 가지를 병행하시면 좋을 것 같습니다. 1. well-known 알고리즘 연습 말씀하신 트리, 그래프(DFS, BFS) 등의 자료구조부터 PS에 자주 나타나는 알고리즘 및 자료구조(누적합, Segment tree, DP, Greedy algorithm, MCMF 등)을 유형 별로 공부합니다. 이러한 부류들은 모르면 풀기 어렵지만 알면 빠르게 풀리는 경우가 많으며, 잘 체계화된 느낌이 강하므로 깡으로 부딪히면서 공부하는 것보다 효율적인 경우가 많습니다. 다양한 인터넷 자료 및 서적이 있을 뿐만 아니라, 단순하게는 백준의 알고리즘 분류를 통해서 연습해볼 수 있습니다. 2. 문제 양치기 개인적으로 주변에서 듣기로는 PS는 양치기를 해서 익숙해지는 게 중요합니다. 입력, 출력 조정부터 문제를 보고 빠르게 코드 형태로 변환하는 것은 연습의 영역이지 지식의 영역이 아니라고 보는 경우가 많았습니다. 마치 수능 수학 공부하듯이요. 양치기를 하다 보면, 문제 유형이 눈에 익으며 더 빠르게 정답을 유추할 수 있습니다. 사소하게는 입력 크기가 16을 넘지 않으면 TSP 문제일 확률이 높다는 식도 있습니다. 또한, 어떤 문제를 푸는 최적의 알고리즘(구현이 어려움)이 있다고 하더라도, 처음에는 빠르게 떠오르는 것들을 먼저 시도하면서 풀게 됩니다. 그러다 보면, 구현이 어려운 최적 알고리즘이 아니더라도 시간과 공간 제한을 만족하는 다른 쉬운 풀이를 발견하면서 시간을 절약할 수도 있습니다. 이러한 전략도 연습이 많이 되어 있는 경우 가능한 것입니다. 물론 적합한 공부 방식은 사람마다 차이가 있으며, 제 정보도 누군가에게는 부적합할 수 있으니 참고만 하시길 바랍니다. 도움이 되셨길 바랍니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!
현직자들의 명쾌한 답변을 얻을 수 있어요.
이미 회원이신가요?
커리어리 AI 봇
GPT가 달아주는 답변입니다.
2024년 04월 28일
알고리즘의 이해와 코딩 스킬이 현재 당신의 고민인 것으로 보입니다. 너무 걱정하지 마십시오, 수많은 엔지니어들이 처음에 비슷한 어려움을 겪었습니다. 다음은 제가 제안하는 몇 가지 방법입니다: 1. **기초부터 신중하게**: 복잡한 문제를 해결하기 전에 먼저 기본적인 문제를 해결해야 합니다. 알고리즘과 자료구조의 기본 개념을 확실히 이해하면서 시작하세요: 반복문, 조건문, 배열, 연결 리스트 등 단순한 데이터 구조부터 시작하여 점진적으로 그래프, 트리 등 복잡한 자료구조로 넘어가세요. 2. **예제 문제 많이 풀기**: 알고리즘 사이트(백준, 프로그래머스 등)에서는 수많은 예제와 실제 코딩 테스트 문제를 제공합니다. 여기에서 별 다섯개짜리 '하드' 문제를 찾아 푸는 대신, 별 한개 '쉬운' 문제부터 시작하여 점차 어려운 수준으로 올라가세요. 3. **솔루션 참고**: 처음에는 스스로 문제를 해결하는 것이 어려울 수 있습니다. 따라서 문제를 이해하고, 가능한 솔루션을 읽고, 코드를 살펴보는 것부터 시작하세요. 이 과정에서 다양한 접근 방식과 최적화 기법을 배울 수 있습니다. 4. **일관성 유지**: 매일 일정 시간을 알고리즘 공부에 투자하여 꾸준히 학습하세요. 알고리즘은 단기간에 익힐 수 있는 능력이 아니라, 지속적인 연습과 반복을 통해 점차 향상시켜야합니다. 5. **파트너와 스터디**: 같이 배우는 동료나 친구가 있다면 서로의 진척 상황을 공유하거나, 문제 해결법을 논의하며 서로 격려할 수 있습니다. 6. **잘게 나눠서 생각하기**: 복잡한 문제를 한 번에 해결하려 하지 마세요. 대신 문제를 여러 개의 작은 부분으로 나누고, 각 부분을 개별적으로 해결하는 방식으로 접근하세요. 마지막으로 자신에게 너그러워 하세요. 모든 사람들이 다른 속도와 방식으로 학습합니다. 기억하세요, 목표는 완벽함이 아니라 지속적인 향상입니다. 분명히 당신은 성공적으로 알고리즘과 코딩 스킬을 향상시킬 수 있을 것입니다.
지금 가입하면 모든 질문의 답변을 볼 수 있어요!