코테 준비생
아직 기초 알고리즘(예: 정렬, 재귀, DFS/BFS) 이해가 완벽하지 않아서요.
강의에서 설명하신 접근법을 연습할 때,
‘어떤 문제부터 푸는 게 효율적인지’ 혹은 ‘매일 어떤 루틴으로 연습하면 좋을지’ 팁을 주실 수 있을까요?
답변 2
2
안녕하세요 혜나님 넘넘 좋은 질문입니다!! 기초 알고리즘이 완벽하지 않다고 느끼는 건 정말 자연스러운 과정입니다. 사실 완벽하게 이해했다고 느끼는 순간이 오기보다는, 문제를 풀면서 점점 익숙해지는 거거든요.
1. 문제 선택 전략 - 이렇게 시작해보세요
강의 자료에서 추천하는 방식을 실전에 맞게 풀어드리면, 일단 개념을 배웠다고 해서 바로 어려운 문제로 가지 마세요. 대신 배운 개념을 직접 활용할 수 있는 단계별 접근을 추천드려요.
먼저 각 개념별로 3-5개씩 쉬운 문제를 푸는 게 좋아요. 예를 들어 재귀를 배웠다면, 팩토리얼 같은 정말 기본적인 문제부터 시작하는 거죠. BFS를 배웠다면 가장 단순한 미로 탐색 문제부터요. 왜냐면 개념이 어떻게 실제로 쓰이는지 체감하는 게 먼저거든요.
그다음엔 같은 개념을 쓰되 살짝 변형된 문제들로 넘어가세요. 이 단계에서 "아, 이런 식으로도 쓰이는구나"라는 경험치가 쌓여요. 강의 자료에서 말한 것처럼, 특정 구현보다는 "이런 류의 조건들에는 어떤 식의 해결법이 쓰이더라"는 감각을 키우는 거죠.
2. 일일 루틴 - 현실적으로 지속 가능하게
매일 루틴은 사람마다 다르지만, 강의에서 강조한 방식을 바탕으로 제안드리면
하루에 1-2시간 정도 시간을 정해두고, 한 문제를 제대로 파고드는 게 여러 문제를 대충 푸는 것보다 낫습니다. 문제를 만났을 때 강의 자료에서 제시한 4단계 접근법을 따라가 보세요.
첫째, 자료구조부터 정하는 거예요. 이 문제의 데이터는 어떤 특성이 있고, 어떤 자료구조로 저장하면 좋을지 생각해보세요. 둘째, 패턴을 파악해요. 예시를 3개 정도 손으로 써보면서 규칙성을 찾아보는 거죠. 셋째, 그 패턴을 코드로 만들어요. 일단 구현하는 게 목표니까 완벽한 코드가 아니어도 괜찮아요. 넷째, 작동하는 코드가 나왔다면 리팩토링하면서 중복을 제거하고 가독성을 높여보세요.
가장 중요한 건 막혔을 때의 대처인데요. 강의 자료에 나온 것처럼 길게는 30분까지 고민해보되, 정말 안 되면 해설을 보는 게 맞아요. 이미 충분히 고민했으니까요. 그런데 해설을 볼 때가 더 중요해요. 내가 막혔던 부분이 어디였는지 기록하고, 해설에서는 어떤 식으로 풀었는지 고민한 다음, 답을 보지 않고 처음부터 다시 작성해보세요. 이 과정을 반복하면 정말 실력이 늘어요.
결국 답은 "질 높은 양치기"예요. 단순히 많이 푸는 게 아니라, 위에서 말한 4단계를 거치면서 숙성된 경험치를 쌓는 거죠.
처음엔 하루에 한 문제도 벅차게 느껴질 수 있어요. 그런데 계속하다 보면 비슷한 패턴의 문제들이 보이기 시작해요. "어? 이거 저번에 풀었던 그 방식이랑 비슷한데?"라는 순간이 오면, 그게 바로 경험치가 쌓인 거에요!! 교재에 있는 코드 구현력을 높이는 체계적인 훈련 방법 문서를 참고해서 복습해보시는 것도 추천드리겠습니다 같이 빠이팅해보시져!!
0
안녕하세요, 인프런 AI 인턴입니다.
이혜나님, 코딩 테스트 준비를 위해 기초 알고리즘을 완벽히 이해하는 것은 굉장히 중요한 부분입니다. 특히 정렬, 재귀, DFS/BFS 같은 기본 알고리즘은 많은 문제의 해법의 기초가 됩니다.
알고리즘 연습 루틴
기초부터 순차적으로:
- 정렬 알고리즘: 버블 정렬, 선택 정렬, 삽입 정렬부터 시작해 퀵 정렬, 병합 정렬로 넘어가세요.
- 재귀: 간단한 문제(예: 팩토리얼, 피보나치 수열)부터 시작하여 조금 더 복잡한 문제(예: 하노이 탑)로 확장하세요.
- DFS/BFS: 기초 개념을 이해한 후, 그래프 탐색 문제로 연습하세요.
- 정렬 알고리즘: 버블 정렬, 선택 정렬, 삽입 정렬부터 시작해 퀵 정렬, 병합 정렬로 넘어가세요.
하루에 하나의 알고리즘 주제:
- 매일 하나의 알고리즘을 선택하여 연습하세요. 강의를 시청하고, 이해한 후 작은 문제들을 풀어보세요.
- 하루의 마지막에는 그날 배운 내용을 메모하거나 요약해보세요. 이를 통해 학습 내용을 재정리하고 정리할 수 있습니다.
- 매일 하나의 알고리즘을 선택하여 연습하세요. 강의를 시청하고, 이해한 후 작은 문제들을 풀어보세요.
다양한 문제 풀이:
- 각 알고리즘의 기본 문제를 푼 후, 점차 난이도가 높은 문제에 도전하세요.
- 다양한 문제 사이트(프로그래머스, 백준)에서 문제를 찾아서 풀어보세요.
- 각 알고리즘의 기본 문제를 푼 후, 점차 난이도가 높은 문제에 도전하세요.
주기적인 복습:
- 주말에는 복습 시간으로 활용하여 한 주 동안 배운 내용을 다시 보세요.
- 이해가 부족한 부분이 있었다면, 해당 알고리즘 강의를 다시 시청하거나 추가 문제를 풀어보세요.
- 주말에는 복습 시간으로 활용하여 한 주 동안 배운 내용을 다시 보세요.
이와 관련된 자세한 설명은 다음 URL에서 확인할 수 있습니다:
- 알고리즘 공부 방법과 루틴 만들기
이 게시물에서는 기초 알고리즘 학습과 관련된 많은 팁을 얻을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
수강평 이벤트
0
59
2
코딩테스트 처음인데 이런 공부방법이어도 괜찮을까요
0
109
2
3-3 정렬-2 선택정렬 로직
0
54
2
링크드 리스트 끝에서 k번째 값 출력하기
0
62
2
LinkedList 과제 Fast, slow 포인터
0
58
2
투포인터 시간복잡도
0
65
2
수강평 작성 후 자료
0
62
2
수업교재 링크 오류
2
120
2
프로그래머스에서 제출 후 채점시 틀림ㅠ
0
155
2
1-10 알고리즘 더 풀어보기(2) 질문 있습니다
0
81
2
문제 풀이 방식 관련 질문입니다!
0
98
2
1-5 알고리즘과 친해지기 (2) - 최빈값찾기 질문 있습니다
0
101
2
수업자료 pdf 받고싶습니다
0
118
2
강의 자료 오류 수정
0
81
1
2-10 더하거나 빼거나 관련 질문입니다
0
68
2
3-8 해쉬 -2
0
51
2
Linked List Element Delete Explanation Problem
0
73
2
강의3-4 스택 탑 문제
0
79
2
코드스니펫 입출력 케이스에 오류가 있는것 같아요
0
107
3
링크드 리스트 원소 찾기 구현 방식 질문드립니다.
0
82
2
1874 - 스택 문항
0
85
2
DP Java 예제 자료형 오버플로우 문제
0
108
2
4-9 4주차 숙제중 농심라면 문제
0
122
2
DFS 에서 스택을 사용하는 이유
1
205
3





