본문 바로가기

전체 글59

[프로그래머스/자바스크립트] 해시 - 베스트앨범 첫번째 풀이 - 실패~~~ function solution(genres, plays) { var answer = []; var songs = []; genres.map((genre, index) => { var obj = {}; obj["index"] = index; obj["genre"] = genre; obj["plays"] = plays[index]; songs.push(obj); }); songs.sort((a, b) => { return b["plays"] - a["plays"]; }); var album = {}; var countByGenre = songs.reduce((obj, song) => { obj[song["genre"]] = (obj[song["genre"]] || 0) + 1; .. 2021. 11. 8.
[프로그래머스/자바스크립트] 해시 - 위장 https://programmers.co.kr/learn/courses/30/lessons/42578 코딩테스트 연습 - 위장 programmers.co.kr function solution(clothes) { var obj = clothes.reduce((accObj, [clothes, category]) => { accObj[category] = (accObj[category] || 0) + 1; return accObj; }, {}); var categoryList = Object.values(obj); var result = 1; categoryList.forEach((num) => { result *= num + 1; }); return result - 1; } - 처음에 못 풀었었다. 코드가 .. 2021. 11. 4.
자바스크립트 클로저에 대한 실용적이고 쉬운 설명 어제 공부한 클로저를 좀더 공부해봤다. 이걸 왜 공부해야 하는지, 어떤 상황에서 알아야 하는지를 생각하면서 최대한 맥락이 살아있고 간단한 설명을 스스로에게 계속 해봤다. 자바스크립트 클로저에 대한 실용적이고 쉬운 설명 클로저가 어려운 개념인 것도 맞지만 이걸 왜 써야 하는지를 몰라서 더 어렵게 느껴지는 부분도 있는 것 같다. 개인적으로 나는 클로저를 변수의 안전한 보관 방식이라고 이해했을 때 가장 명쾌했다. 비유를 하자면 일기장을 내가 아는 곳에 보관하는 것과 같다고 생각한다. 일기장을 방 아무데나 놓으면 누구든지 일기장을 볼 수 있고 수정할 수 있으니 곤란하니, 서랍에 넣어놓고 안전하게 보관하는 것이다. 변수도 마찬가지다. 그냥 변수를 어디서나 접근 가능하도록 보관하면 수정의 위험도 있고 하니, 서랍 .. 2021. 11. 3.
자바스크립트에서 알아야 할 필수 개념들 [제로초 토크] 자바스크립트에서 알아야 할 필수 개념들 가장 중요한 것들 - 함수와 객체의 특성을 잘 알고 넘어가야 한다. 멀티 패러다임 언어이기 때문에 다양한 코딩 스타일이 있을 수 있다. 문자열.indexOf 이런 걸 외우지말고, 차라리 함수에 뭐가 있다, 객체에 뭐가 있다를 외우는 게 더 낫다. - "비동기" 개념 -> 이벤트 드리븐 프로그래밍 (사용자의 액션에 따라 발생하는 이벤트를 중심으로 한 프로그래밍) - 비동기를 이해하기 위해서는 콜백, 프로미스, async/await 을 이해해야 한다. 근데 이것들이 매우 어렵다. - 이것들을 이해하기 위해서는 호출 스택, 이벤트 루프, 실행 컨텍스트를 이해해야 한다. 이들을 이해하면 자바스크립트 코드를 보자마자 어떤 순서로 동작할 지 알 수 있게 된다... 2021. 11. 3.
[프로그래머스/자바스크립트] 해시 - 완주하지 못한 선수 https://programmers.co.kr/learn/courses/30/lessons/42576 코딩테스트 연습 - 완주하지 못한 선수 수많은 마라톤 선수들이 마라톤에 참여하였습니다. 단 한 명의 선수를 제외하고는 모든 선수가 마라톤을 완주하였습니다. 마라톤에 참여한 선수들의 이름이 담긴 배열 participant와 완주한 선수 programmers.co.kr 첫번째 풀이 function solution(participant, completion) { completion.forEach((racer) => { var idx = participant.indexOf(racer); participant.splice(idx, 1); }); var answer = participant[0]; return an.. 2021. 11. 3.
클로저(Closure) 5분만에 이해하기 - 자바스크립트 중급 강좌 #11 자바스크립트 중급 강좌 #11 클로저(Closure) 5분만에 이해하기 어휘적 환경 (Lexical Environment) Lexical 환경 (내부 - 전역) - 현재 코드는 이제 막 시작하여 노란줄 위치에서 실행되고 있다고 가정하자. - 스크립트 내에서 선언된 변수들은 lexical 환경으로 올라간다. 이때, let으로 선언한 one 이라는 변수는 호이스팅된다. 단, 현재 위치에서는 초기화가 되어있지 않아서 사용할 수 없을 뿐이다. 반면, 함수 선언은 변수와 달리 바로 초기화 되기 때문에 현재 위치에서도 사용이 가능하다. (변수로 선언된 함수 표현식은 이렇게 사용할 수 없다) - 현재 위치에서는 변수는 선언되었지만 할당은 되어있지 않기 때문에 one은 초기값 undefined를 갖는다. 값이 unde.. 2021. 11. 2.