📍목표와 결과
✅목표
- 백준에서 1년 동안 1일 1문제 해결
✅결과
- 22년 4월 19일 ~ 23년 4월 17일 (365일) 연속 문제 해결
나의 solve.ac 프로필
https://solved.ac/profile/kjhan710
solved.ac
알고리즘 문제해결 학습의 이정표 🚩 Baekjoon Online Judge 문제들의 난이도 및 티어 정보를 제공하는 사이트입니다.
solved.ac
📍목표 설정의 배경
1. JavaScript 문법과 메서드 연습하고 싶어
- 이런 저런 메서드 써보며 습득하기 (무작정 다 외울 수 없어..)
- 알고리즘 지식이 필요없는 구현 문제를 풀며 JavaScript 연습
2. 코딩 테스트 대비
- 자료구조와 알고리즘 까지 공부하자
📍득과 실
✅얻은것
1. JavaScript의 다양한 내장 객체를 써보는 경험
예를 들면
- 이번 문제에서는 array 객체의 some 메서드를 이용해볼까..?
- Set 객체와 Map 객체 써서 간편하게 중복을 제거하고 I/O 시간 줄이기..
평소에 쓸 일이 없던 메서드도 사용해보면서 JavaScript 내장 메서드를 익히는데 매우 큰 도움이 됨!
(Pythonic code 처럼 JavaScriptic code...)
2. 프로그래밍 구현 실력 업
가장 기억에 남는 문제..
- 공기청정기 작동 과정 모델링하면서 2차원 배열에서 내부 공기를 순환시키고 미세먼지 크기는 낮추는 동작을 1초에 한번씩 발생하게 구현..
- 문제를 풀고 나서 현실세계를 모델링하는게 진짜 프로그래밍의 매력이지! 를 느꼈던 순간
3. 자료구조와 알고리즘의 이해
큐, 스택 부터 힙, 트리, 그래프 등 다양한 자료구조가 각각 어떤 때 쓰이는지 알게됨
예를 들면,
- 배열 대신 연결 리스트가 성능이 무조건 좋은 것은 아니다
- 우선순위 큐는 우선순위 순으로 빠르게 노드를 확인할 수 있어서 유용하다 등
다이나믹 프로그래밍 또는 DFS/BFS 같은 완전 탐색 알고리즘을 사용하는 법을 알게됨
어떤 카테고리의 문제를 많이 풀었나..
구현, 자료구조, 수학 등..
단일 알고리즘으로는 DP도 많이 품
4. 클린 코드
- 절차형 대신 선언형으로 코딩하는 습관 => 코드 가독성 측면에서 매우 좋음
- 모듈화 (한가지 기능만 담당하는 함수로 나누기) => 중간에 테스트하기도 편함!
5. 제2외국어 느낌으로 Python 연습
- JavaScript로 안 풀리는 문제 (메모리, 시간 이슈) Python으로 해결하며 제 2의 언어 연습!
6. 보람, 힐링
- 문제를 풀며 쌓이는 기록과 실력이 느는 것을 직접 확인하며 보람을 얻을 수 있었다
- 문제 풀 때는 힘들지만, 풀고 나면 희열과 쾌감을 느낄 수 있었다
반면..
✅주의할 점
1. 시간을 꽤 많이 소모
- 하루 1시간 ~ 2시간은 기본
말고는 딱히 없다
📍향후 계획
1. 백준 말고 프로그래머스도 풀어볼까?
2. Python 위주로 코테 연습해볼까? (제2외국어 공부 느낌으로)
📍정리
정리하자면 많이 배웠고, 꾸준히 했고, 내 인생에서 매일 이렇게 접속한 사이트가 있을까 싶을 정도로 매일매일 했다는게 신기하다..
나쁘지 않았다.. 재밌었다..
끝.