본문 바로가기

Boostcamp

오랜만의 TIL

오늘은 네이버 부스트캠프 첫날이다. 7월 10일부터 8월 4일까지 진행되는 챌린지 기간 시작! 이 과정을 무사히 통과하지 못한다면 멤버쉽 과정에 입과할 수 없다.

 

어제는 일찍 잠에 들 계획이었는데, 안타깝게도 현재 진행중인 사이드 플젝 배포 일정이 꼬이면서 늦게까지 개발을 했다...

 

거의 다 했는데, 왜 실서버에서 특정 ip의 접근이 안되는지... 아직도 모르겠다... (이는 추후에 자세히 포스팅 할 예정)

 

아무튼 오늘 오전엔 OT를 진행하고, 오후에는 코딩테스트에서 나오는 유형의 문제풀이를 했다. 처음 봤을때는 상당히 만만해 보였는데, 이게 js로 하려니 만만치가 않았다. python으로 풀었다면 2시간안에 구현이 가능 할 것이라고 생각이 되었다.

 

오랜만에 js를 만지니 문법부터 다 까먹어버렸다.... 사실 챌린지 기간에는 js를 만질일이 없을 것이라고 생각했다.. 이럴줄 알았으면 미리 준비할걸... 그래도 그럭저럭 마무리하고 제출했다.

 

가장 어려웠던 점은 10줄 제한과 들여쓰기 3회 제한이었다. 어떤 의미에서 이런 제한을 두신건지 이해는 가지만, 이를 지키면서 익숙하지 않은 js코딩을 하는게 상당히 고역이었다. 결국엔 억지로 함수의 파라미터를 줄이고 삼항연산자(개인적으로 별로 안좋아한다) 등을 도입하면서 어찌저찌 근처로 맞출수는 있었다.

 

오늘 학습 마무리 후에는 js공부를 좀 해야겠다. 코디님이 주신 "You Don't Know JS"를 드디어 좀 읽어봐야겠다. 아 근데 그전에 사플 출시가 먼저지...

 

 

오늘 배운점

1. JS에서의 표준 입출력

const readline = require("readline");

const r = readline.createInterface({
  input: process.stdin,
  output: process.stdout,
});

r.on("line", (line) => {
  console.log(line)
  r.close();
});

항상 코테를 python으로 봐서 js는 정말 오랜만에 다뤄봤고, 표준 입출력은 한번도 만져본적이 없다. require문법은 이제 안쓴다고 얼핏 들은거 같은데... 추후에 학습하자.

 

2. JSON.Parse()

JSON.Parse()와 JSON.stringify()는 사실 이전부터 좀 알고있었다.

JSON.Parse()는 JSON문자열을 JS의 객체로 변환하는 것이고, JSON.stringify()는 그 반대이다. 여기서 이상한게, 원래는 JSON자체가 javascript의 object인 줄 알았는데, 그게 아니었다. js도 JSON을 파싱해야한다. pythond으로 데이터 분석이나 크롤링 할 때,js는 좋겠다... 고 생각했는데 그게 아니었다니.. 아 그리고 하나 더, 굳이 {} 이 형식으로 된것 뿐 아니라 그냥 문자열이나 array도 JSON으로 표현할 수 있다. 

 

3. for문

가장 헷갈렸던 부분인 것 같다. 

 

python에서는 for문을 사용할 때, for i in range(10) 이런 식으로 사용했는데, js에서는 for(let i=0; i<10; i++) 이런 식으로 사용한다.

여기까진 ok, 근데 for문 안에서 배열을 순회할 때, python에서는 for i in arr 이런 식으로 사용했는데, js에서는 for(let i of arr) 이런 식으로 사용한다. 그니까 인덱싱이 아니라 배열 객체안의 값을 직접 가져올때는 이렇다.

 

재밌는건 forEach였다. forEach 배열의 요소에 대해 한번씩 순회하면서 콜백 함수를 실행한다. 콜백함수의 인자로는 배열의 요소, 인덱스, 배열 자체가 들어간다. 콜백함수는 인자를 3개까지만 받을 있다. (python enumerate 비슷한 느낌)

 

이밖에 문자열 슬라이싱이나, 몇가지 내장함수를 더 사용했지만, 새로 안 부분은 아니라 이만 줄인다.

'Boostcamp' 카테고리의 다른 글

함수형 프로그래밍  (0) 2023.07.19
두번째 주 시작  (0) 2023.07.18
첫째주 회고  (0) 2023.07.15
Tokenizer, Lexer, Parser... Compiler?  (0) 2023.07.13
둘째날, 알고있다고 착각하는 것  (0) 2023.07.11