개발 공부 57

[프로그래머스] [1차] 비밀지도 (JavaScript)

문제 프로그래머스 2018 KAKAO BLIND RECRUITMENT 비밀지도 https://programmers.co.kr/learn/courses/30/lessons/17681 코딩테스트 연습 - [1차] 비밀지도 비밀지도 네오는 평소 프로도가 비상금을 숨겨놓는 장소를 알려줄 비밀지도를 손에 넣었다. 그런데 이 비밀지도는 숫자로 암호화되어 있어 위치를 확인하기 위해서는 암호를 해독해야 한다. 다 programmers.co.kr 언어 자바스크립트(JavaScript) 접근 방법 Input을 2진수로 변환하고 왼쪽에 빈 부분은 0으로 채운다. 겹쳤을 때 1인 부분은 #, 0인 부분은 공백으로 둔다. 코드 function solution(n, arr1, arr2) { var answer = []; let ..

[프로그래머스] 실패율 (JavaScript)

문제 프로그래머스 2019 KAKAO BLIND RECRUITMENT 실패율 https://programmers.co.kr/learn/courses/30/lessons/42889# 코딩테스트 연습 - 실패율 실패율 슈퍼 게임 개발자 오렐리는 큰 고민에 빠졌다. 그녀가 만든 프랜즈 오천성이 대성공을 거뒀지만, 요즘 신규 사용자의 수가 급감한 것이다. 원인은 신규 사용자와 기존 사용자 사이에 스�� programmers.co.kr 언어 자바스크립트(JavaScript) 접근 방법 각 단계에서 실패한 유저수를 해당 단계까지 도전한 누적 도전자 수를 나누어 실패율을 계산한다. 누적 도전자수는 전체수에서 각 단계에서 실패한 유저수를 빼면서 구한다. stage와 실패율을 가지는 객체를 배열에 저장한다. 배열을 정렬..

[프로그래머스] 후보키 (JavaScript)

문제 프로그래머스 2019 KAKAO BLIND RECRUITMENT 후보키 https://programmers.co.kr/learn/courses/30/lessons/42890 코딩테스트 연습 - 후보키 [["100","ryan","music","2"],["200","apeach","math","2"],["300","tube","computer","3"],["400","con","computer","4"],["500","muzi","music","3"],["600","apeach","music","2"]] 2 programmers.co.kr 언어 자바스크립트(JavaScript) 접근 방법 테이블 컬럼의 개수 N을 이용해서 N에서 생성할 수 있는 모든 조합 리스트를 생성한다. 조합에서 값은 컬럼의 인덱..

[프로그래머스] 기둥과 보 설치 (JavaScript)

문제 프로그래머스 2020 KAKAO BLIND RECRUITMENT 기둥과 보 설치 언어 자바스크립트(JavaScript) https://programmers.co.kr/learn/courses/30/lessons/60061 코딩테스트 연습 - 기둥과 보 설치 5 [[1,0,0,1],[1,1,1,1],[2,1,0,1],[2,2,1,1],[5,0,0,1],[5,1,0,1],[4,2,1,1],[3,2,1,1]] [[1,0,0],[1,1,1],[2,1,0],[2,2,1],[3,2,1],[4,2,1],[5,0,0],[5,1,0]] 5 [[0,0,0,1],[2,0,0,1],[4,0,0,1],[0,1,1,1],[1,1,1,1],[2,1,1,1],[3,1,1,1],[2,0,0,0],[1,1,1,0],[2,2,0,1..

[JavaScript] generator

Generator 함수, Generator Generator 함수는 일반 함수와는 달리 function의 우측에 *를 표시하여 정의한 함수이다. Generator 함수에는 두 가지 특성이 있다. 함수를 호출하면 iterator를 반환한다. 이때 반환하는 iterator를 generator라고 부른다. 함수 내부 코드가 함수를 호출할 때 실행되지 않는다. 대신 generator의 next 메서드를 호출할 때 실행되며 함수 내부의 yield 키워드에 도달할 때까지 실행된다. 단순한 예제를 작성하면 다음과 같다. counterGen이라는 함수를 호출하면 iterator를 반환한다. 반환된 iterator는 generator 함수에서 yield 키워드에 도달할 때까지 코드를 실행하고 yield 키워드와 같이 위..

[JavaScript] iterable, iterator

iterable 객체란 Iterable 객체란 Symbol.iterator라는 Symbol 타입의 값을 속성으로 가지고 그 속성의 값이 인자를 받지 않으며 iterator 객체를 반환하는 메소드인 객체를 의미한다. 배열은 대표적인 iterable 객체이다. arr이라는 객체에 Symbol.iterator라는 속성의 값은 어떤 메소드인데, 그 메소드를 실행하면 다음과 같이 iterator를 반환한다. Symbol.iterator의 의미를 모르겠다면 Symbol에 관해 설명한 이전 글을 참고하길 바란다. https://jongbeom-dev.tistory.com/138 [JavaScript] Symbol Symbol을 알아야 하는 이유? 처음에 Symbol을 공부할 때에는 그런가 보다 하고 넘어갔는데 결국에..

[JavaScript] Symbol

Symbol을 알아야 하는 이유? 처음에 Symbol을 공부할 때에는 그런가 보다 하고 넘어갔는데 결국에는 다시 돌아와 공부하게 되었다. 제너레이터를 공부하다 보니 이터레이터를 알아야 하고, 이터레이터를 공부하다 보니 결국 Symbol을 알아야 했다. 그래서 Symbol, 이터레이터, 제너레이터까지 차례대로 공부하면서 정리하고자 한다. Symbol Symbol은 ES6에서 도입한 새로운 데이터 타입이다. 즉 숫자, 문자열, 불리언과 같은 원시 타입이다. Symbol()이라는 함수는 항상 Symbol 타입의 값을 반환하며 유일한 값이다. Symbol()은 Symbol()과 같이 new 키워드를 사용할 수 없다. Symbol 함수에 인자로 문자열을 입력할 수 있지만 특별한 기능은 존재하지 않는다. 굳이 차이..

[JavaScript] prototype

생성자 함수의 prototype 속성 모든 함수에는 prototype이라는 속성이 존재한다. 일반적인 함수로 사용할 때에는 prototype을 신경 쓸 일이 별로 없지만 함수를 객체의 생성자로 사용할 때에는 prototype 속성이 중요하다. new 키워드로 생성한 객체는 생성자 함수의 prototype 속성을 __proto__ 속성으로 접근 가능하기 때문이다. 위와 같이 Car이라는 생성자 함수를 이용하여 생성한 car1 객채에서는 Car의 prototype 속성에 __proto__ 속성으로 접근 가능하다. 당연히 다음과 같은 경우로는 접근할 수 없다. 생성자 함수로 생성한 객체의 __proto__ 속성 car1 객체의 __proto__ 속성의 특이한 점은 car1에서 바로 __proto__ 속성에 정..

[JavaScript] this

자바스크립트에서 this는 항상 어떤 객체를 가리킨다. Global context에서의 this 함수 밖에서 this가 가리키는 객체는 항상 winodw가 된다. Function context에서의 this 함수 내부에서 this가 가리키는 객체는 어떻게 함수를 호출했는가에 따라 달라진다. 만약 함수가 특정 객체의 메서드로 호출된다면 this는 특정 객체를 가리키게 된다. 이는 객체의 메서드를 호출할 때 내부적으로 this를 바꿔주기 때문이다. 하지만 변수에 객체의 메소드를 할당하여 호출한다면 결과는 달라진다. 이 경우에는 o2가 함수이며 메서드를 호출한 것이아니라 함수를 호출했기 때문에 this는 undefined가 된다. 만약 this에 특정 객체를 할당하고 싶다면 call, apply를 사용하면된다..

[JavaScript] async, await

비동기 함수의 결과에따라 서로 다른 코드를 작성하고 싶으면 콜백 함수를 이용해야한다. 하지만 이는 가독성을 해치게되고 이 문제를 해결하기 위해 프로미스 (Promise)가 등장한다. 하지만 프로미스를 사용하더라도 좀 더 코드를 간결하게 작성하고 싶은 요구가 있었고 이를 개선하기 위해 async, await가 등장한다. async 를 function 앞에 두어 선언하고 그 함수 내부에 비동기 함수 앞에 await를 두고 호출하면 .then이나 .catch를 쓰지 않더라도 코드를 간결하게 작성할 수 있다. 물론 이때 가정은 await를 두고 호출할 비동기 함수는 프로미스를 반환하는 함수여야한다. 일단 비동기 함수를 사용할 때 발생하는 가독성 문제와 이를 프로미스로 해결하는 방법을 이해하지 못하면 async,..