Carrot
Etc/기록들

[TIL] 6월 13일 기록

NaDuck 2023. 6. 14. 10:28

오늘의 할 일

📌 ~20:00 팀 데일리 미션 출제

 📌 ~다음날 06:00 팀 데일리 미션 답변

 📌 TIL 작성

 

✅ 위클리미션 week 11~12 진행

✅ 면접 스터디

✅ 알고리즘 스터디

 

오늘의 나는 무엇을 배웠을까?

6/13 면접 스터디

var funcs = [];

for (var i = 0; i < 3; i++) {
  funcs[i] = function (){ return i; } 
}

for (var j = 0; j < 3; j++) {
  console.log(funcs[j]()); // 여기서 함수로 실행
}
  • 클로저에 대한 질문을 받았다. 진짜 세상에 너무 어려웠음.. 면접에 자주 나오는 질문이라던데 실제 면접에서 이 문제를 맞닥뜨렸으면 답변을 제대로 못했을 것 같다.
  • var는 함수 스코프만 가지기 때문에 for문에 쓰이는 for(var i=0; i<3; i++)의 i도 마찬가지로 for문이 끝난 이후에도 남아있다. 따라서 위의 경우 i=3으로 for문을 벗어나게 되고, 해당 i=3으로 값을 계속 참조하게 돼서 문제가 발생하더라.
  • 해결 방법으로 위의 for문에서 쓰인 i를 let 키워드로 선언하는 방법이 있고, 또는 (아래 코드) 클로저 개념을 이용해 즉시 실행함수 안에 함수를 또 return하는 방식으로도 할 수 있다.
// 해결 코드
var funcs = [];

for(var i = 0; i < 3; i++) {
  funcs[i] = (function(id){
    return function(){ // closure
			return id;
		};
  }(i));
}

for (var j = 0; j < 3; j++) {
  console.log(funcs[j]());  // 여기서 함수로 실행
}

 

6/13 코테 스터디

1. 프로그래머스 - 베스트앨범(level 3)

  • 파이썬의 dict(해시 자료구조)를 이용해 풀었다.
  • 문제 유형이 해시여서 괜히 어려워보였는데 단순 구현 문제였고, 로직도 생각보다 어렵지 않았다.

2. 프로그래머스 - n^2 배열 자르기(level 2)

  • 단순 구현 문제
  • 2차원 배열로 처음에 접근했는데, 한 변의 길이가 최대 n=10^7이어서 시간 초과 (구현 다해놓고 나중에서야 n이 매우 크다는 것을 알았다..) 
  • 주어진 left, right 범위를 이용해 풀이
  • 항상 "문제를 꼼꼼이 읽고 시작하자"라고 다짐하는데, 생각보다 쉽지 않은 것 같다. 그래도 문제를 잘못 이해해서 다시 고치는 시간이 배로 들기 때문에 다시 킵인마인드!

'Etc > 기록들' 카테고리의 다른 글

[TIL] 6월 14일 기록  (1) 2023.06.14
[WIL] 5월 1일 ~ 5월 7일  (0) 2023.05.09
[TIL] 5월 5일 기록  (0) 2023.05.09
[TIL] 5월 4일 기록  (0) 2023.05.09
[TIL] 5월 8일 기록  (0) 2023.05.09