[프래그래머스] JS로 0단계, 1단계 모두 풀기 후기

Joosi_Cool·2023년 1월 28일
1

독학 일기

목록 보기
5/6
post-thumbnail
post-custom-banner

도전 배경

이전에 부트캠프 경험을 너무 하고 싶어서, 작년에 백준 골드 달성을 도전했다. 사실 본인은 기초가 너무 없어서, 이러한 코테 문제를 도전하기에는 벅찼다. 그래서 브론즈 문제부터 실버 문제까지 쉬운 문제 위주로 풀었고, 결국 골드를 달성했다.

하지만 여기서 많이 아쉬웠던 점은 어려운 문제를 많이 도전하지 않았다는 것이다. 어려운 알고리즘을 요구하는 문제는 되도록 피하였고 구현, 수학과 관련된 문제 위주로 풀었다. 백준골드 라는 목표를 위해 달렸고, 달성은 했지만 알고리즘 측면, 코딩 실력은 많이 늘지 않았다.

처음 달성을 했을때, 느꼈던 기분은 지금까지 나는 백준 골드 목표의 이유를 잊고, 목표를 달성하기 위해 매달렸다. 내가 이러한 목표를 세운 이유는 코딩테스트에 기초를 마련하기 위함이었는데.....

그래서 본인은 다른 도전을 하기로 했다. 지인에게 프로그래머스 라는 사이트를 추천받았다. 이 사이트는 실제 코테를 시험 볼때 이곳에서 자주 보는 사이트이며, 코딩테스트 문제도 모아져있어서 백준과 같이 코테 문제를 풀 수 있다.

또한 문제가 진짜 코테와 유사하게 지문이 긴 문제들이 많아, 백준보다 상대적으로 코테를 준비할때 더욱 더 도움이 될 것이라고 생각했다. 그래서 본인은 프로그래머스를 목표로 잡았다.


C++에서 JS로의 변화

백준을 풀때는 C++ 을 이용하여 문제를 풀었다. 이유는 현재 대학교 공부에서 C++을 많이 쓰고 있고 공부하고 있기 때문에 상대적으로 접근하기 쉬울 것이라고 생각했다. 백준 문제도 처음 푸는데, 언어도 완전 새로운 것을 하면, 너무 혼란스러울 것 같았다.

하지만 백준 문제를 풀면서, 프론트 공부도 같이 진행해왔다. 그래서 그런지 JS가 어느새 손이 익어있었다. 또한 주위 사람들은 JS를 주력언어로 삼아서, 코테를 공부한다면 C++보다 훨씬 좋을 것이라고 추천해줬다.

그래서 많은 고민을 했고, 앞으로 프론트 공부를 위해서라도 JS로 주력언어를 바꿔야 겠다고 다짐했다. 이번에 프로그래머스에 도전할때도 JS 로 도전하기로 결정했다.



프로그래머스로의 도전

프로그래머스에 대해 알아보니, 백준에 티어가 있는것처럼 프로그래머스에는 레벨 이라는 것이 존재했다. 본인은 아직 JS 가 처음이니 0단계부터 2단계까지 도전해야겠다고 다짐했다.
처음 문제를 풀기 시작한 시기는 2022년 12월 23일이었다. 일주일 안에 0단계를 풀었고, 1월 28일에 1단계를 완료했다.

JS 로 풀기 시작하면서, 하면 할수록 신세계 같았다.
당연히 안될꺼라고 생각한 것이 이게 돼? 하는 것들이 많았다. 참 웃기면서도 편했다. 또 반대로 적긴 했지만 이게 안돼? 이런 것들이 가끔씩 있어서 혼란스럽긴 했다. 하지만 계속 하면 할수록 익숙해져갔다.

1레벨 문제 마지막에 개인정보 수집 유효기간 문제가 있다.
본인은 경험삼아 카카오 코딩 테스트를 한번 봤었다. 가장 악명이 높았던 그 코테....
당연히도 1번 문제도 풀지 못했고, 0솔 했었다. 정말 열심히 다 도전해봤지만, 쉽지 않았다. 개인정보 수집 유효기간 문제가 이때 1번 문제였다. 이번엔 모든 0~1레벨 문제를 다 풀고, 이를 마지막에 도전했다. 한 1시간 좀 넘어서 문제를 푼것 같다. 시간은 생각보다 좀 걸리긴 했지만, 문제를 풀어낸 것을 보고, 확실히 성장했다는 것을 느껴서 이전 백준과는 다르게 성취감을 느낀것 같다.



후기 및 개선 방향

다른 분들도 본인처럼 프로그래머스나 코테 문제를 풀때, 아래 사항을 꼭 실천해봤으면 하는 마음에 내가 했던 코테 문제 추천 풀이 방식을 적어보려한다.

  1. 선 설계, 후 코딩
    본인은 문제를 풀때, 설계를 한번 아이패드나 종이에 쭉 써보고, 이를 보면서 코딩을 시작한다. 이러한 과정들이 있어야 헷갈리지 않기 때문이다.
  2. 의미있는 변수명
    변수명을 하나 짓더라도, 단순히 a, k, i로 짓지 않고 의미있게 지으면 나중에 그 코드를 보더라도, 훨씬 수월하게 문제를 풀 수 있다. 문제가 틀렸을때도, 변수명이 의미가 있다면 이를 통해서 어디가 틀렸는지 알 수 있다.
  3. 주석 달기
    코드 별로 하는 기능이 다를 것이다. 기능 별로 주석을 달아서 어떤 기능을 하는지 써두면 좋다. 나중에 문제가 틀렸다면, 각각을 분리해서 볼 수 있어서 매우 편리하다.
    예시를 들면 2+2+1 이라는 코드가 있을때, //2+2하는 과정 , //+1하는 과정 하는 과정 이렇게 주석을 달자.

위와 같은 부분만 잘 수행한다면, 훨씬 효율적인 코드를 구상할 수 있고, 제일 좋은 점은 코드를 수정할때 매우 좋다.
만약에 코테를 막 시작한다면 위의 3가지는 습관을 들이는 것을 매우 추천, 강추 한다.

본인도 처음에 이렇게 하지 않았고, 하면서 바꾼 습관들이며, 이렇게 하니깐 풀기 위한 풀이가 아니라, 문제를 파악한 풀이를 해낼 수 있었다.
돌아만 가는 코드는 중요하지 않다. 내가 이 문제를 이해하고, 이를 통한 문제 풀이가 의미가 있다고 생각하며, 실력도 좋아질 수 있다고 생각한다.



이번에는 백준과는 다르게 많은 성취감을 느꼈지만 이번에도 아쉬운 점이 있었다.
바로 기록을 하지 않았다는 점이다. 문제가 0~1단계라 상대적으로 구현 문제가 많았고, 쉬운 문제들이었다. 그래서 기록의 필요성을 느끼지 못했던 것이 있긴 했다. 그렇다 하더라도, 기록을 했으면 하는 아쉬운 마음이 남았다. 그래서 이후에 2레벨 문제를 풀땐, 모든 문제를 블로깅에 남겨 보려한다. 설계과정, 실패 코드, 정답 코드, 후기 정도를 간단하게 남겨서, 기록을 남겨야 겠다고 공부방향을 정했다.

이번 경험은 코딩테스트, 알고리즘 부분에서 많은 성취감과 자신감을 느꼈던 도전이었다. 이번에 생각한 개선방향을 가지고 이후에 2레벨 도전을 진행해보려 한다.

화이팅~!!

profile
집돌이 FE개발자의 노트
post-custom-banner

2개의 댓글

comment-user-thumbnail
2023년 2월 4일

좋은 포스팅 감사합니다 🥹 저도 다시 알고리즘 시작하고 싶게 의욕이 생기네요!

답글 달기
comment-user-thumbnail
2024년 7월 19일

엥 블로그 글 읽다가 작성자보고 깜짝 놀랐네용 ㅋㅋㅋ 잘 따라하겠습니다

답글 달기