자바스크립트

    [JavaScript] 호이스팅 & TDZ

    호이스팅 변수/함수 선언 시점 이전에 그것에 접근할 수 있는 것. 선언이 마치 스코프의 상단으로 끌어올려진 것 같은 현상이다. 코드 실행 전, 자바스크립트 엔진이 코드를 스캔하고 코드 내의 변수, 함수 선언에 대한 정보를 실행컨텍스트에 기억한다. 이 때, 선언 TYPE에 따라 기억되는 정보가 달라진다. 따라서 호이스팅 결과도 다르게 나타난다. TYPE HOISTED? 초기값 스코프 함수 선언문 ✅ Actual function 블록(strict mode) var ✅ undefined 함수 let & const ❎ TDZ(uninitialized) 블록 함수 표현식/화살표 함수 var, let, const 선언 방식에 영향을 받는다. var 선언방식의 경우 선언과 동시에 초기화되므로, undefined의 값..

    [알고리즘] 백준 11723번: 집합 (비트마스크) W_node.js

    문제 11723번: 집합 첫째 줄에 수행해야 하는 연산의 수 M (1 ≤ M ≤ 3,000,000)이 주어진다. 둘째 줄부터 M개의 줄에 수행해야 하는 연산이 한 줄에 하나씩 주어진다. www.acmicpc.net 비어있는 공집합 S가 주어졌을 때, 아래 연산을 수행하는 프로그램을 작성하시오. add x: S에 x를 추가한다. (1 ≤ x ≤ 20) S에 x가 이미 있는 경우에는 연산을 무시한다. remove x: S에서 x를 제거한다. (1 ≤ x ≤ 20) S에 x가 없는 경우에는 연산을 무시한다. check x: S에 x가 있으면 1을, 없으면 0을 출력한다. (1 ≤ x ≤ 20) toggle x: S에 x가 있으면 x를 제거하고, 없으면 x를 추가한다. (1 ≤ x ≤ 20) all: S를 {1..

    [알고리즘]연속 부분 수열 1 - 투포인터 알고리즘

    문제 N개의 수로 이루어진 수열이 주어집니다. 이 수열에서 연속부분수열의 합이 특정숫자 M이 되는 경우가 몇 번 있는지 구하는 프로그램을 작성하세요. 만약 N=8, M=6이고 수열이 다음과 같다면 1 2 1 3 1 1 1 2 합이 6이 되는 연속부분수열은 {2, 1, 3}, {1, 3, 1, 1}, {3, 1, 1, 1}로 총 3가지입니다. 입력예제 N=8, M=6 1 2 1 3 1 1 1 2 강사님의 풀이 function solution(m, arr){ let answer = 0; let sum = 0; let left = 0; //left, right 두개의 포인터로 시작, right는 for문 안에서 증감된다. for(let right = 0; right=m){ //sum이 m보다 크거나 같으면, ..

    [알고리즘] 공통원소 구하기 - 투포인터 알고리즘

    문제 A, B 두 개의 집합이 주어지면 두 집합의 공통 원소를 추출하여 오름차순으로 출력하는 프로그램을 작성하세요. (두 집합의 공통원소를 오름차순 정렬하여 출력합니다.) 입력예제 5 1 3 9 5 2 5 3 2 5 7 8 풀이 function solution2(arr1, arr2) { let answer = []; let n = arr1.length; let m = arr2.length; let p1 = 0; let p2 = 0; arr1.sort((a, b) => a - b); arr2.sort((a, b) => a - b); while (p1 < n && p2 < n) { if (arr1[p1] === arr2[p2]) { answer.push(arr1[p1++]); p2++; } else if (..

    [JS] 전위 연산자, 후위 연산자

    증가/감소(++/--) 연산자는 피연산자를 기준으로 위치에 따라 그 의미가 약간 달라진다. 전위 연산자 증가/감소(++/--) 연산자가 피연산자의 앞에 있으면 이를 전위 연산자 라고 한다. 이 경우 피 연산자의 값을 먼저 증가/감소 시킨 뒤 다른 연산을 수행한다. let x = 5, result; //선증가 후할당 result = ++x; //result == 6, x == 6; //선감소 후할당 result = --x; //result == 5, x == 5; 위 예시에서는 x앞의 전위 증가 연산자(++)가 x = x+1로 증가시켰고, 이 결과값을 result에 할당시켜 두 변수 모두 6의 값을 갖게 되었다. (감소도 마찬가지) 후위 연산자 전위 연산자와 반대로, 먼저 다른 연산을 수행한 후 피연산자의..

    [알고리즘]뒤집은 소수(소수 판별하기)

    문제 n개의 자연수가 입력되면 각 자연수를 뒤집은 후 그 뒤집은 수가 소수이면 그 소수를 출력하세요. 풀이 function isPrime(num) { if (num === 1) return false; for (let i = 2; i

    [알고리즘] 중복 문자 제거 - indexOf, Set

    문제 입력된 문자열의 중복을 제거하여 리턴하세요. 제거된 문자열의 순서는 원래 순서를 유지합니다. 풀이 1 (indexOf 사용) function solution(s){ let answer = ''; for(let i = 0; i < s.length; i++) { if(s.indexOf(s[i])===i) answer += s[i]; } return answer; } solution("ksekkset"); //kset; s.indexOf('a') : s문자열에서 'a'의 위치를 반환한다. 없다면 -1을 반환한다. s.indexOf('a',1) : s문자열에서 'a'를 1번째 인덱스 부터 찾는다. (그 이전의 인덱스는 무시한다.) if(s.indexOf(s[i])===i) : indexOf는 찾고있는 문자..

    [TIL]2022-0118 (TUE)

    [TIL]2022-0118 (TUE)

    📖 TIL [JavaScript] While 반복문 (for문 과의 차이, 용법) for문 사용 연습 const bills = [22,295,176,440,37,105,10,1100,86,52]; const tips = []; const totals = []; const calcTip = function(bill) { return bill >=50 && bill

    [JS]2021-1115 자바스크립트 .createElement() & .appendChild - HTML 요소 추가하기

    document.creatElement() document 객체의 메소드로, HTML 요소를 생성할 수 있다. const bgImage = document.createElement("img"); //img태그 생성 부모노드.appendChild() 특정 요소에 자식 요소를 추가할 수 있다. document.body.appendChild(bgImage); //body 내부에 bgImage를 추가 배열 내의 랜덤 이미지 화면에 출력하기 const images = [ "0.jpg", "1.jpg", "2.png" ]; const chosenImage = images[Math.floor(Math.random() * images.length)]; const bgImage = document.createElemen..

    [JS]2021-1114 자바스크립트 Math - Random number 랜덤 숫자 생성 /반올림, 올림, 버림

    nomadcoders VanilaJS #6.0~2 강의를 정리한 내용입니다. Math.random() 랜덤한 숫자를 만들 수 있는 함수. 0이상 1 미만의 난수(부동소수점)을 랜덤하게 만든다. See the Pen Untitled by hyejj19 (@hyejj19) on CodePen. Math.floor() 소수점 이하를 버림하는 메소드. 참고 : .ceil() 올림 / .round() 반올림. 소수점 이하를 버림으로써, 정수를 만들 수 있다. 난수의 범위를 생각해 Math.random * n을 하면, 원하는 범위의 정수 난수값을 얻을 수 있다. See the Pen random2 by hyejj19 (@hyejj19) on CodePen. 이를 배열에 적용해, 새로고침 시 배열 내의 랜덤한 내용이..