본문 바로가기

Algorithm/Javascript로 코테 준비하기

[JS로 코테 준비하기] 12. 중간점검 - 프로그래머스 Lv.0 완료

반응형

개요

약 3달 전, 알고리즘 언어를 C++에서 JS로 바꿔야겠다는 마음을 먹고 [JS로 코테 준비하기]를 시작했다.

 

프로그래머스의 모든 문제를 풀겠다는 엄청난 의욕을 가지고 자바스크립트 뿌시기에 도전했으나.. 인턴 생활을 하면서 추가적인 시간을 내는 것이 쉽지 않았다. (핑계라면 핑계지만 11, 12월은 조금 많이 바빴다.. 😭)

 

하지만 언제까지 이렇게 끌고 있을 수 없었기에, 새해라는 날짜가 주는 힘을 빌려, 요 며칠 꾸준히 풀었고 드디어 프로그래머스의 level 0 문제를 다 풀었다! 딱 100문제다.

 

Lv. 0 푼 문제
Lv. 0 안 푼 문제

 

 

무엇을 얻었나

이 단계의 문제들은 기초적인 문제들이다. 문제를 보자마자 풀이가 생각나는 정도이며, 알고리즘이라는 말보다는 JS문법 익히기가 더 어울린다고 볼 수 있다. (물론 다른 언어로 알고리즘 풀이를 하다가 넘어온 입장에서)

 

나는 JS 문법을 활용해서 문제를 푸는 방식을 얻고자 했으므로, 이 과정에서 많은 것을 얻었다. 단순히 문제의 정답을 맞히는 것에 목적을 두지 않고, “C++에서는 이렇게 했던 것을 JS에서는 이렇게 하는구나”에 초점을 맞추었다.

 

처음의 나는

  • JS의 기초적인 배열, 문자열의 메소드를 잘 활용하지 못했다.
  • 불필요한 변수를 많이 만들었다. 함수형을 잘 활용하지 못했기 때문이다.

자바스크립트 코드라 보기 어려운 풀이가 대부분이었다.

 

(Lv. 0을 완료한) 지금의 나는

  • 특정 상황에 필요한 메소드의 후보들이 잘 떠오른다.
  • 함수형의 특징을 어느정도 살려, 가독성에 큰 문제가 없다고 판단되면 불필요한 변수를 만들지 않고 정답을 도출한다.

특히 배열과 문자열의 내장 메소드들에 꽤 익숙해진 것 같고, 정규 표현식의 활용도를 크게 느끼는 중이다. (물론 아직 부족한 것이 많지만 개인적으로 만족한다)

 

 

어떻게 풀었나

  1. 정답이 높은 문제 순으로 정렬한 뒤, 그것부터 푼다.
  2. 문제가 좀 어렵다 싶으면 과감하게 넘어간다. 내일 풀면 된다.
  3. 혼자서 정답을 도출한다(레벨이 낮으니까 가능). 최대한 JS 스럽다고 생각하는 방향의 정답을 내야 한다. 이때 mdn을 뒤지면서 내장 메소드에 익숙해진다.
  4. 정답을 맞힌 이후에는 무조건 다른 사람의 풀이를 본다. 이때 내 코드가 JS 스럽지 못함을 깨닫는다.
  5. 몰랐던 것을 알게 되면 그 부분을 정리한다.
  6. 2~5를 반복하면 나도 모르게 익숙해지는 부분이 생기면서 한 사이클이 점점 빨라진다.

 

다른 사람들의 정답을 보면서, JS 스러움에 대해 많이 배웠다. 이걸 이렇게 한다고?! 를 굉장히 많이 느끼며 함수형 풀이에 대한 감탄을 한 적이 한두 번이 아니다.

 

참고) 자주 보는 것이 가장 중요한 듯! 

문제를 푸는 텀이 너무 길면 이전에 했던 것들을 다 까먹는다. 내가 그랬다. 찾아본 걸 또 찾아보고 또 보고 또 본다 (파란 링크가 아니라 보라 링크를 계속 클릭한다). 일주일 중 하루 날 잡고 10개씩 풀기보다는 매일 1개 혹은 이틀에 1개라도 노출 빈도를 높여 익숙함을 잃지 않는 것이 중요한 것 같다.

 

 

다시 확인해 볼 문제들

풀다가 오..?!라는 느낌을 받은 문제들은 나중에 다시 한번 풀어보려고 모아두었다.

기본적이지만 복습에 좋은 문제, 접근 법을 기억할만한 문제, 삽질 좀 한 문제들이다.

 

 

참고) 순서대로 풀면 좋은 것

  1. 합성수 찾기
  2. 소인수분해
  3. 유한소수 판별하기

→ 1번을 활용해 2번을 풀 수 있고, 2번을 활용해 3번을 풀 수 있는 소수와 관련되어 유기적으로 엮여 있는 문제였다.

 

 

앞으로 계획

다음 목표는 level 1 정복!

Lv. 1까지는 이번과 같은 방식으로 풀어볼 예정이다.

Lv. 1의 모든 문제 - 2월 내로 풀어야지!

반응형