javascript 20

[leetCode] Add Binary

Add Binary Input: a = "11", b = "1" Output: "100" Input: a = "1010", b = "1011" Output: "10101" String 타입으로 주어지는 이진수를 더해서 String 형식으로 출력하는 문제이다. /** * @param {string} a * @param {string} b * @return {string} */ // First Try var addBinary = function(a, b) { let carry = 0 const res = [] const aLen = a.length; const bLen = b.length; for (let i = aLen - 1, j = bLen - 1; 0 = 0 ? Number(a[i]) : 0; let..

[JavaScript] 엄격 모드 (use strict)

엄격 모드는 ES5에 도입된 문법이다. 자바스크립트 최상단에 use strict 문구를 넣어 실행한다. 또는 함수 내에서도 작성 가능하다. 엄격 모드를 실행하기 전에는 관용적으로 느슨하게 허용되는 '오류를 유발할 가능성 있는 문법' 때문에 디버깅이 어려운 요인이 되곤 했다. strict mode를 실행해주면 미리 해당 에러를 출력해서 바로잡을 수 있도록 도와준다. 업데이트 될 새로운 명세의 자바스크립트에 대응하기도 편하고, 최적화 이슈에도 도움이 되어서 use strict를 사용이 권고된다. 리액트, 뷰 같은 프레임워크를 사용할 때는 자동으로 엄격 모드를 사용할 수 있게 해줘서 크게 신경쓰지 않았지만, 바닐라 자바스크립트 프로젝트를 할 때는 추가해주는 습관이 좋겠다. 보통 npx로 CRA을 하고 나면 아..

[JavaScript] call, apply and bind

자바스크립트에서는 함수도 객체로 다뤄진다. call(), apply(), bind()는 모두 함수 실행을 제어하기 위해 사용되는 메소드이다. call()과 apply()는 ES5에 도입된 문법이고 bind()는 그후 ES5에 도입되었다. 함수를 즉시 실행하고자 할 때는 call()과 apply()를 사용하고, bind()는 나중에 bound된 함수를 리턴 받아 사용하므로 이후에 실행될 함수를 생각하며 써야 한다. const user = { name: 'Hannah' } const profile = function (location, language) { return `${this.name} is a ${language} programmer, who lives in ${location}`; } consol..

[firebase] updateProfile is not a function Issue

문제 상황 Firebase의 Auth 기능을 이용해 유저의 프로필 정보를 받아서 DisplayName을 업데이트하려고 했다. 첫 번째 업데이트는 제대로 됐지만, 두 번째부터는 아래 같은 에러를 냈다. 문제 해결 최상위 App.js 파일에서 refreshuser라는 메소드를 두고, 프로필 정보를 업데이트할 때마다 이를 바로 반영할 수 있게 firebase.auth로부터 currentUser를 받아오고 있었다. 여기까지는 문제가 없었지만, 이를 Object.assign({}, user))로 복사한 객체를 받아오는 과정에서 enumerable 속성인 메소드 updateProfile을 복사해오지 못했던 것이다. 그래서 유저가 프로필 이름을 변경한 첫 번째 시점에서는 제대로 작동했지만, refreshuser 메소..

[Programmers] JavaScript, 완전 탐색, 모의고사 문제

문제 1, 2, 3번 학생이 있다. 매개변수로 정답지가 배열로 주어지고, 각 학생은 나름의 찍는 패턴을 갖고 있다. 이때 가장 많이 맞춘 학생들을 오름차순으로 반환한다. programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 코드 풀이 첫 번째 함수 solution(answers)는 padEnd로 시작했다. 신규 아이디 추천 문제에서 padEnd를 처음 알게 돼서 연습 겸 사용해봤다. 우선 각 학생들의 찍는 패턴을 students 변수에 담는다. map을 돌며 매개변수로 주어진 answer의 length만큼, student라는 각 학생들의 찍는 패턴을 반복해서 넣어주었다. 만일 문제가 8문제라 하면 1..

[Programmers] JavaScript, 3진법 뒤집기 (toString(), parseInt(), reduce())

programmers.co.kr/learn/challenges 코딩테스트 연습 기초부터 차근차근, 직접 코드를 작성해 보세요. programmers.co.kr 문제 자연수 n이 주어질 때, n을 3진법으로 바꾸고, 이를 앞뒤로 뒤집는다. 이를 다시 10진법으로 변환한다. 코드 풀이 10진법을 2진법으로 바꾸는 로직과 동일하다. 2로 나눈 나머지 대신 3으로 나눈 나머지를 num에 담는 식이다. n이 3보다 작은 경우를 고려해 num += n을 잊지 말고 추가해준다. 10진법을 3진법으로만 바꾸는 데 그치지 않고 이를 뒤집기 때문에 위 같은 코드를 썼다. parseInt()는 문자열 인자를 구문분석해 특정 진수의 정수를 반환한다. 인자가 문자열이 아니라면 문자열로 변환한다. 뒤집힌 3진법은 문자열이고, 이..

[Programmers] 소수 찾기, 에라토스테네스의 체

문제 1부터 입력받은 숫자 n 사이에 있는 소수의 개수를 반환하는 함수, solution을 만들어 보세요. 소수는 1과 자기 자신으로만 나누어지는 수를 의미합니다. (1은 소수가 아닙니다.) 제한 조건 n은 2이상 1000000이하의 자연수입니다. 코드 풀이 주어진 숫자가 배열 형태가 아니므로, 첫 번째로 반복문을 등장시켜서 소수를 찾기 위한 숫자 집합을 만들어준다. 1은 자연스럽게 제외가 되니 2부터 시작해 n까지 배열에 넣어준다. 이때 arr[0], arr[1]은 채워지지 않아서 undefined이 될 것이지만, 구하는 것은 소수의 개수이므로 filter 메서드를 통해서 지워나갈 수 있다. 만들어진 배열을 순회하면서 소수가 아닌 수들을 제거해줄 목적으로 0을 넣어준다. i = 2일 때, i번째에 위치..

[Programmers] JavaScript에서 문자열 내림차순으로 정렬하기

문제 문자열 s에 나타나는 문자를 큰것부터 작은 순으로 정렬해 새로운 문자열을 리턴하는 함수, solution을 완성해주세요. s는 영문 대소문자로만 구성되어 있으며, 대문자는 소문자보다 작은 것으로 간주합니다. 제한 사항 str은 길이 1 이상인 문자열입니다. 입출력 예 ZbcdefggfedcbZ 코드 풀이 JavaScript의 sort() 메소드는 문자열의 유니코드 코드 포인트를 따른다. 유니코드에서는 대문자가 소문자보다 크므로, 주어진 문자열에 sort() 메소드를 적용하면 abcdef...ABCD... 순으로 정렬될 것이다. 이를 reverse() 메서드를 이용해 뒤집으면 ZYXW... fedcba 순으로 정렬될 것이다. 대문자가 소문자보다 작은 것으로 간주되므로 reverse() 메서드로 끝이 ..

[Vue-todo-list] #4 chart.js로 todo data 시각화하기 (2) - Pie Chart

2021/02/08 - [👩‍💻/Vue.js] - [Vue-todo-list] #3 chart.js로 todo data 시각화하기 (1) - Line Chart 2021/02/08 - [👩‍💻/Vue.js] - [Vue-todo-list] #2 카테고리가 있는 Todo List 만들기 2021/02/08 - [👩‍💻/Vue.js] - [Vue-todo-list] #1 Date 객체를 이용해 달력 숫자 구하기/지난 날짜, 오늘 날짜 구별을 위한 CSS 스타일링 Pie chart는 이전 포스팅에서 다뤘던 Line chart에 비해 엄청 엄청 쉬운 편에 속해 크게 고민하지 않고 import 해준 뒤 바로 썼다. import { Vue } from "vue-property-decorator"; import { ..

👩‍💻/Vue 2021.02.08