백준 151문제 풀고 느낀 점 : "뭔가 잘못되었다"
[주저리주저리]
이전까지 알고리즘 공부도 찍먹, 코딩 테스트 공부도 찍먹을 하다가
아래와 같은 과정을 국비 + 내돈내산으로 참여하면서 본격적으로 코테 공부에 입문했다.
처음 시작할 때는 백준 solved.ac 기준 브론즈? 였던 것 같다.
지금은 실버 3이다. 시작에 비해서 많이 올라왔다.
[문제를 풀면서 느낀 벽]
내가 그동안 풀었던 문제들은 다음과 같은 유형이다.
- 코딩테스트 스터디에서 주어진 문제
- 백준 문제정렬_맞은 사람_문제 난이도 낮은 순서
- solved.ac 랜덤 마라톤 문제
학생 때 수학을 배우고 공부하면
낮은 난이도의 문제부터 풀어가면서 계단식으로 난이도를 높이며 접근했다.
코딩테스트도 카테고리는 다르지만 따지고 보면 '풀어야' 하는 문제라 생각해서
위에서 말한 2번 유형의 문제들을 많이 풀었다.
하지만 코드를 구현(타이핑)하는 속도는 빨라졌지만
내가 처음 보는 유형이라던가, 익숙하지 않은 알고리즘 사용을 요구하는 문제가 나오면
나는 한없이 강약약강이 되어버렸다.
시간이 지나도 문제를 풀지 못해서 구글링을 하거나, GPT 창을 켜서 힌트를 얻는데 현타가 왔다.
[고민]
실력이 늘지 않은 것은 아니다.
여간 바보가 아닌 이상 151문제나 풀었는데 실력이 여전할 수는 없었다.
하지만 브론즈 문제가 아닌 실버문제를 풀면서 위와 같은 어려움을 느꼈다.
명석하지 않은 나의 머리로도 지금 공부법을 이어가는 것이 비효율적이고
나중에 가서 교정하기 쉽지 않을 것이라 생각했다.
효율적인 공부법까진 아니어도 옆길로 벗어나지 않는
정석적인 공부법으로 바꿔야겠다는 생각을 했고
더 나아가 알고리즘도 짧은 강의자료로는 나의 둔한 머리를 이해시키기 어려우니
제대로 이해하고 코드를 작성하자는 생각을 했다.
[해결책]
- 코딩 테스트 잘못된 공부 방법
- 무지성 양치기
- 무지성으로 제출 → 확인 → 제출 → 확인... 과정 반복
- 문제 풀고 땡. 다음 문제로 넘어가기 + 한 번 푼 문제 다시 안 풀기
- 안 풀리는 문제 며칠이상 붙잡기
- 문제 읽자마자 분석과 설계(의사코드) 없이 바로 코드 작성
나는 무지성 양치기, 제출 확인 반복, 풀고 다시 안보는 타입이다.
다행스럽게도 의사코드는 작성함 ㅎㅎ;
내용을 요약하기 위해 인공지능을 사용했다.
나도 영상을 보면서 요약했는데, 필력이 똥이어서 그냥 요약한 글을 가져왔다.
⚠️ 코딩 테스트, 왜 잘못된 방법으로 공부하고 있을까?
많은 사람들이 코딩 테스트 공부를 무지성 양치기, 코드 즉시 제출, 장시간 고민 후 풀이 확인 등의 잘못된 방법으로 하고 있습니다. 이러한 방식은 코딩 테스트 플랫폼이나 구글의 도움 없이 문제를 해결하는 능력을 키우는 데 효과적이지 않습니다. 특히, 라이브 코딩 테스트 환경에서는 더욱 취약해질 수 있습니다.
🧑💻 코딩 테스트 플랫폼 선택과 문제 분석의 중요성
리트코드, 백준 온라인 저지, 프로그래머스 등 다양한 코딩 테스트 연습 플랫폼 중에서 자신에게 맞는 것을 선택하세요. 문제를 풀기 전, 입력과 출력을 명확히 이해하고 문제 해결 전략을 먼저 세우는 것이 중요합니다. 코드를 바로 작성하는 습관은 라이브 코딩 인터뷰에서 감점 요인이 될 수 있습니다. 문제를 분석할 때는 문제의 본질을 파악하고 상수 조건을 확인하여 문제의 범위를 좁혀야 합니다. 입력 길이, 자료 구조, 시간 복잡도 등을 고려하여 효율적인 알고리즘을 선택하는 것이 중요합니다. 라이브 코딩 시에는 면접관에게 질문하여 문제의 제약 조건을 명확히 하는 것도 좋은 전략입니다.
✍️ 코드 작성 및 검증, 복잡도 분석의 필수 단계
코드 작성 시에는 각 줄마다 자신의 생각을 설명하면서 작성하는 것이 좋습니다. 이는 라이브 코딩 테스트뿐만 아니라 온라인 코딩 테스트에도 도움이 됩니다. 코드 작성 후에는 일반적인 데이터와 엣지 케이스를 직접 시뮬레이션하여 코드를 검증해야 합니다. 제출 전, 시간 복잡도와 공간 복잡도를 분석하고 그 이유를 설명할 수 있어야 합니다. 오답이 발생하면, 놓친 케이스를 찾고 효율적인 풀이 방법을 고민해야 합니다. 정답을 맞혔더라도 다른 사람의 풀이를 참고하여 더 나은 방법을 학습하는 것이 중요합니다.
🤝 막히는 문제, 현명하게 대처하는 방법
혼자서 문제를 해결하려는 끈기는 중요하지만, 모르는 문제를 너무 오래 붙잡고 있는 것은 비효율적입니다. 30분에서 1시간 정도 고민 후에도 해결책이 떠오르지 않으면, 다른 사람의 풀이를 참고하여 지식을 습득하는 것이 좋습니다. 특히, 취업 준비생에게는 시간 관리가 중요합니다. 풀이 방법을 떠올렸지만 구현에 실패하는 경우에도 너무 많은 시간을 소비하지 않는 것이 좋습니다. 다른 사람의 코드를 보고 배우면서 구현 노하우를 익히세요. 문제 접근부터 구현까지 40분 안에 해결하지 못하면 풀이를 보고 학습하는 것이 효율적입니다.
🔁 반복 학습, 코딩 테스트 실력 향상의 핵심
문제를 푼 후에는 한 달 안에 다시 돌아와서 문제를 풀어봐야 합니다. 이전에 풀었던 방법보다 더 빠르고 깔끔하게 푸는 것을 목표로 하세요. 다른 풀이 방법도 시도해보고, 시간 내에 풀지 못하면 다시 풀이를 보고 학습하는 과정을 반복해야 합니다. 문제를 봤을 때 15분 내로 풀어서 정답을 받을 수 있을 때까지 반복 학습하는 것이 좋습니다. 꾸준한 반복 학습을 통해 코딩 테스트 실력을 향상시킬 수 있습니다. 요약하자면, 문제 분석, 상수 조건 확인, 접근 방법 고민 후 코딩, 복잡도 분석, 타인 풀이 학습, 반복 학습 이 모든 과정을 거쳐야 코딩 테스트를 제대로 준비할 수 있습니다.
+ 부족한 알고리즘 지식 해결법
앞으로 일주일 동안 [그림으로 이해하는 알고리즘] 책을 읽은 뒤, 제대로 코테 문제를 풀어볼 생각이다
그림으로 이해하는 알고리즘 | 이시다 모리테루 - 교보문고
그림으로 이해하는 알고리즘 | 알고리즘과 자료 구조, 이렇게 쉽게 표현하고 이해할 수 있다고? 전 세계 250만 다운로드 ‘알고리즘 도감’ 앱을 책으로 엮은 일본 아마존 스테디셀러, 개정2판!알
product.kyobobook.co.kr
연휴도 넉넉하니 3 회독은 할 수 있지 않을까
알고리즘 문제를 푸는데 코드를 작성하는 방법을 모른다기보다는
알고리즘에 대한 이해도가 너무 부족하다고 느꼈기 때문에
이 책으로 나의 지식 깊이가 좀 더 깊어지길 기대해 본다.
일주일 뒤에 후기로 돌아오겠다.
기다려라 코딩 테스트... 알고리즘...