본문 바로가기

전체 글131

ES Module Export (Default, Named) 모듈 시스템을 사용하는 이유는, 쪼개져있는 코드들을 효율적으로 불러다 쓰기 위해서다. module을 잘 활용하면 깔끔하고 효율적인 코드를 작성할 수 있다. Named Export - 지정된 이름을 사용하는 export - 한 파일에서 여러 객체를 export할때 사용 // exp.js export const num = 100; export const foo = (a) => a + 1; export class bar {}; // imp.js import { num, foo, bar } from './exp.js'; import시 정의된 것과 이름을 사용해야 하며, 변경을 원하는 경우 import { foo as f } 로 사용할 수 있다. 한번에 전체 export를 가져오고 싶은 경우 // imp.js i.. 2021. 9. 28.
JetBrains IDE 글자 폰트 확대하기 (Ctrl + 마우스 휠 활성화) Intelij, PyCharm, RubyMine, WebStorm 등 대부분 동일할 것 같다. File>Settings>Editor>General 최상단 Change font size with Ctrl+Mouse Wheel 체크 설정 후 Ctrl+휠로 확대/축소 할 수 있다. 맥은 아마 Cmd+휠일듯. 2021. 9. 14.
[Javascript] Bubble Sort, Selection Sort, Insertion Sort (버블/선택/삽입 정렬) 버블 정렬과 선택 정렬, 삽입 정렬은 은 가장 간단한 정렬방법들이다. 모두 O(N^2)의 시간복잡도를 갖는다. 버블 정렬 배열 처음부터 두 요소씩 선택하여 뒷 요소가 더 작으면 자리를 바꿔나가는 방식이다. function bubble(arr){ // 배열을 처음부터 두 요소씩 선택하여 뒷 요소가 더 작으면 자리를 바꿔나간다. // 다시 처음부터... n^2번 실행 const len = arr.length-1; let temp, i, j; for(i=0; i [1, 4, 2, 3] 2. 남은 요소들을 탐색하여 가장 작은 수를 찾아 두번째 요소와 자리를 바꾼다. [1, 4, 2, 3] => [1, 2, 4, 3] 3. 반복 function selection(arr) { // 배열을 처음부터 탐색하여 가장 작.. 2021. 9. 11.
JetBrains IDE 추천 플러그인 및 설치방법 (Intelij IDEA/WebStorm/RubyMine/PyCharm/...) Plugin 설치방법 상단 메뉴바의 Files>Settings>Plugins>원하는 플러그인 검색 후 Install 추천 플러그인 Rainbow Brackets (강력추천) 괄호 짝을 맞춰 같은 색으로 맞춰줍니다. vs code bracket pair colorizer 비슷한 제품 format on save & restart on save Plugin Save Actions 설치 저장시 Auto import, Reformat을 자동화해주는 플러그인 안내에 따라 IDE 재시작 Settings>Other Settings>Save Actions 이제 저장시 code formatting 및 import가 자동으로 됩니다. 또한 debugging mode로 서버가 켜져있는 경우 수정한 클래스가 reload됩니다... 2021. 9. 6.
[프로그래머스] 카펫 (완전탐색/javascript) 가운데는 노란색, 가장자리 한줄은 갈색인 카펫이 있다. 노란색 타일과 갈색 타일의 수가 주어졌을 때 카펫의 가로세로 길이를 리턴하는 문제다. 우선, 갈색 타일은 무조건 한 줄만 테두리쳐져 있으므로 결과는 [노랑타일의 너비+2, 노랑타일의 높이+2]가 될 것이다. 1. 주어진 yellow로 가능한 경우의 수를 구한다. 2. yellow로 가능한 형태 중, 주어진 brown과 일치하는 것을 찾는다. 3. 적합한 yellow 형태의 가로세로에 2씩 더한 값을 리턴한다. yellow = 12인 경우의 가능한 경우의 수를 보자. yellow 영역은 세로x가로가 [[1, 12], [2, 6], [3, 4]] 세 가지가 가능하다. ([4, 3], [6, 2], [12, 1]은 세로가 더 길게 되므로 조건에 맞지 않다.. 2021. 8. 26.
일곱 난쟁이 (완전탐색/javascript) 왕비를 피해 일곱 난쟁이들과 함께 평화롭게 생활하고 있던 백설공주에게 위기가 찾아왔다. 일과를 마치고 돌아온 난쟁이가 일곱 명이 아닌 아홉 명이었던 것이다. 아홉 명의 난쟁이는 모두 자신이 "백설 공주와 일곱 난쟁이"의 주인공이라고 주장했다. 뛰어난 수학적 직관력을 가지고 있던 백설공주는, 다행스럽게도 일곱 난쟁이의 키의 합이 100이 됨을 기억해 냈다. 아홉 난쟁이의 키가 주어졌을 때, 백설공주를 도와 일곱 난쟁이를 찾는 프로그램을 작성하시오. 1. 먼저 9명의 키의 총합을 구하고 2. 총합 - 100이 가짜 난쟁이들의 몸무게의 합이므로 3. 반복을 돌며 두 명을 뽑아 몸무게의 합이 가짜 난쟁이들의 몸무게의 합이 되는지 확인한다. 배열을 변경(요소 삭제)하는 경우 index가 변화하는 것에 주의한다. .. 2021. 8. 25.
[Javascript Cheet Sheet] Array객체, 반복문 for...in, for...of /** * for문은 도중에 아이템을 제거해버리면 제대로 돌지 않는다. */ const arr = [1, 2, 3, 4, 5]; for(let item of arr){ arr.shift(); console.log(arr); console.log(item); // 1 3 5 } /** * for of도 내부적으로는 for(let i = 0 ; i < arr.length ; i++) 이런식으로 동작하기 때문에, * 당연하게도 도중에 배열 아이템이 사라져버리면 배열 길이만큼 반복하지 않는다. * 이렇게 놓고 보면 당연한데도, 왜 내가 생각한 횟수만큼 돌지 않는지 고민했다. 멍청하게 헤매지 말자. * * 원본 배열을 복제한 배열로 작업을 하던가, * splice, pop, sh.. 2021. 8. 25.
[Javascript Cheet Sheet] 숫자 다루기 알고리즘 문제풀이에 많이 사용되는 것만 따로 정리함. 선언 축약 let a, b; // a = undefined, b = undefined let a, b = 1; // a = undefined, b = 1 let a = 1, b = 2; // a = 1, b = 2 let [a, b] = [1, 2]; // a = 1, b = 2 let [a, b] = [1]; // a = 1, b = undefined 세 수 중 최솟값을 구하는 방법 // 1. if문 사용 let min; if(a 2021. 8. 25.
[프로그래머스] 단속카메라 (javascript) 풀어보러 가기 : https://programmers.co.kr/learn/courses/30/lessons/42884 코딩테스트 연습 - 단속카메라 [[-20,15], [-14,-5], [-18,-13], [-5,-3]] 2 programmers.co.kr 그리디는 많이 풀어보는 수밖에 없는 것 같다.. 나는 구현보다 아이디어를 떠올리기가 더 어려운 것 같다. function solution(routes) { var answer = 0; // 종료위치 기준으로 오름차순 정력 routes.sort((a,b) => a[1]-b[1]); // 카메라의 위치를 최솟값보다 작게 두고 시작한다. let cam = -300001; for(let i in routes){ // 차량의 진입점이 현재 카메라보다 뒤에 있.. 2021. 8. 24.