알고리즘 스터디를 병행하며 백준 플래티넘을 찍게 되었습니다.
이를 계기로 알고리즘 공부 방법, 느낀 점, 후회한 점 등에 대해 정리하고자 합니다.
그리고 프론트엔드가 파이썬으로 코테를 보는 것에 대한 제 생각을 작게나마 남깁니다.
(개인적인 생각이기 때문에 충분히 의견이 다를 수 있음을 이해해주셨으면 합니다.)
알고리즘 사이트
알고리즘 사이트는 백준, SWEA, 프로그래머스, 코드포스 등 많은 선택지가 존재합니다.
저희 알고리즘 스터디는 초반엔 백준(solved.ac), 이후엔 프로그래머스를 병행했습니다.
💡 백준 (solved.ac)
백준은 입문 단계, 특정 유형 연습 단계에 적합합니다.
특히 solved.ac는 백준의 문제가 단계별, 유형별로 잘 정리되어 있어 스터디에 활용하기 좋습니다.
- 많은 문제를 가지고 있습니다.
- 유형별 문제가 잘 정리되어 있습니다.
- 그룹 기능을 통해 스터디를 관리하기 편합니다.
- 구글에 문제 풀이가 많습니다.
💡 프로그래머스
프로그래머스는 심화 단계, 실전 연습 단계에 적합합니다.
- 많은 IT 기업에서 프로그래머스 웹 IDE를 통해 코테를 봅니다.
- 양질의 구현 문제가 많습니다. (카카오, 데브매칭..)
🔎 알고리즘 관련 유튜브 영상 추천
두 영상이 알고리즘을 입문하는 데에 많은 도움을 주었습니다.
티어 시스템의 장단점
백준과 Solved.ac에서 제공하는 티어 시스템은 게이미피케이션을 활용하고 있습니다.
특히 게임을 좋아하는 저에겐 이 티어 시스템이 제법 동기부여가 됐습니다.
하지만 자칫 티어 시스템에 주객전도될 수 있어서 가볍게 활용하는 것이 좋다고 생각합니다.
💡 티어보다 중요한 것은 코테!
티어 시스템은 스터디원의 실력 파악, 문제 수준 파악에도 도움이 됩니다.
하지만 티어를 목적으로 알고리즘 공부를 하면 안 됩니다. (제가 그랬습니다..)
코테에 나오는 문제들은 주로 실버 ~ 골드 난이도의 구현 문제들이기 때문입니다.
물론 알고리즘에 흥미가 있거나, 전공생이라면 심화 개념도 중요합니다.
자료구조와 컴퓨팅 사고에 큰 도움이 되기 때문입니다.
하지만 취준생이라면 유형에 익숙해진 뒤 구현 문제를 많이 푸는 것을 추천합니다.
작성할 코드량이 길고, 여러 개념들이 섞여있는 그러한 문제들 말입니다.
주로 프로그래머스에 이런 유형의 문제들이 많습니다.
문제를 푸는 데에 오래 걸리지만 가장 실력이 늘 수 있는 학습 방법이라 생각합니다.
프론트엔드인데 파이썬으로 코테를 볼까요?
이에 대한 제 답변은 상황에 따라 다르다입니다.
다만 장기적으로는 자바스크립트로 코딩 테스트를 치르는 것이 맞다고 생각합니다.
💡 이런 분들은 파이썬을
만약 본인이 코테 경험이 없고 자바스크립트에 익숙하지 않다면 파이썬을 추천합니다.
- 파이썬은 문법은 쉽고 간결합니다.
- 짧은 시간으로 코테에 아웃풋을 내기 좋습니다.
- 구글에 파이썬 풀이가 많기 때문입니다.
- 자바스크립트는 코테에 특화된 언어가 아닙니다. (제약이 많습니다.)
💡 이런 분들은 자바스크립트를
프론트엔드로 목표가 확고하면서도 여유가 있다면 자바스크립트를 추천합니다.
- 자바스크립트의 문법에 익숙해질 수 있습니다.
- 프론트엔드 개발에 간접적으로 도움이 됩니다.
- 파이썬과 개념이 혼동될 여지가 줄어들게 됩니다.
- 일부 기업의 프론트 직군 코테는 자바스크립트로 언어를 한정합니다.
막힐 때 풀이를 보는 것이 좋을까요?
문제를 풀다가 막혔을 때 너무 오랜 시간 고민하지 않는 것이 좋습니다.
다만 머리로는 로직을 알겠지만 코드로 표현이 어려운 상황이라면 조금 더 고민해봅시다!
이 상황을 극복했을 때 실력이 가장 많이 는다고 생각합니다.
저는 쉽게 맞힌 문제들도 구글에 있는 다른 많은 풀이들을 참고합니다.
한 문제에 대한 다양한 풀이를 보면서 코드 리뷰의 경험을 쌓을 수 있기 때문입니다.
스터디의 장점 중 하나도 여러 풀이들을 볼 수 있다는 점이기도 합니다. 😊
물론 초반엔 직접 풀지 못한 아쉬움과 좌절감 때문에 풀이를 보는 것이 힘들 수 있습니다.
하지만 그 개념의 비슷한 문제들은 충분히 많이 존재하니까 걱정할 필요 없습니다.
그렇게 일정량의 문제를 풀게 됐을 때 문제들이 비슷하다는 느낌을 받을 수 있습니다.
그러니 그전까지는 많은 풀이들을 참고하며 다양한 풀이 방법에 익숙해지는 것을 추천합니다.
알고리즘은 좋은 연습공간
저는 알고리즘이 다양한 개발 방법론을 연습하기 좋은 환경이라 생각합니다.
문제 풀이에 신선함을 느낄 수 있고 어려운 개념을 조금씩 연습하기에도 좋습니다.
💡 이런 것들을 연습할 수 있습니다.
특히 스터디원과 서로 개발 방법론들을 연습하면 더욱 효과적입니다.
- 클린 코드 (좋은 변수명, 적절한 함수 분리, 효율적인 로직, 코드 컨벤션..)
- Git (커밋, 컨벤션, 브랜치, 워크플로우..)
- 함수형 프로그래밍 (함수형 사고, 순수 함수..)
- 객체지향 프로그래밍 (객체지향적 사고, 객체 설계, SOLID..)
- TDD (예제로 제공되는 TC 활용, 직접 히든 TC 찾는 연습)
이 외에도 수많은 개념을 연습하기 좋습니다.
현재의 저는 오랫동안 알고리즘을 쉬고 프론트엔드 공부에 집중하고 있습니다.
그러다 보니 그때 자신 있게 풀었던 문제들이 지금은 어려울 때가 많습니다. 😕
하지만 이 당시 열심히 공부했던 자료구조나 알고리즘은 지금도 웹 개발에서 큰 도움을 주고 있습니다.
이 글을 보는 분들도 시행착오를 최대한 줄여서 짧은 기간에 최고의 아웃풋을 냈으면 좋겠습니다.
'기타 > 회고' 카테고리의 다른 글
[회고] 개발자에게 사이드 프로젝트란 (DND 8기 후기) (4) | 2023.03.06 |
---|---|
[회고] 인프런 첫 번째 네트워킹 데이, 심야 FE 후기 (0) | 2022.06.19 |
[회고] 문제를 찾는 사람 (당근마켓 면접) (0) | 2022.03.18 |
[회고] 300일간의 일일 커밋 (0) | 2022.01.01 |
[회고] 디프만 10기 합격 (0) | 2021.09.01 |