본문 바로가기

분류 전체보기72

클로저란 무엇인가요? 클로저를 이해하기 위해선 스코프 체인, 렉시컬 환경에 대한 이해가 선행되어야 한다. 차근차근 이해해보자. 스코프 체인JavaScript에서 변수를 검색하는 메커니즘 JavaScript에서는 함수나 블록 내에서 특정 변수를 참조하고자 할 때 현재 스코프부터 상위 스코프로 해당 변수를 검색해나가는데, 이러한 과정을 스코프 체인이라고 한다. 예를 들어 아래와 같은 코드의 경우const globalColor = 'red'function func1() { const func1Color = 'blue' function func2() { const func2Color = 'green' console.log(func2Color) console.log(func1Color) console.log(.. 2025. 1. 2.
백준 2745번 백준 2745번을 풀어보았다. 크게 3가지 풀이로 정리할 수 있다.0~9, A~Z로 케이스 구분 후 계산parseInt 메소드reverse 메소드 1. 0~9, A~Z로 케이스 구분 후 계산 이때 0~9, A~Z로 케이스를 구분하는 방법에 따라 크게 3가지로 구분할 수 있다. 1-1. isNaN 메소드let [N, B] = require('fs').readFileSync('/dev/stdin').toString().split(' ')B = Number(B)let decimal = 0, exponent = 0for (let i = N.length - 1; i >= 0; i--) { let value = 0 if (isNaN(N[i])) value = N[i].charCodeAt() - 55 else .. 2025. 1. 2.
백준 2563번 백준 2563번을 풀어보았다. 처음 풀었을 때는 지나치게 수학적으로만 접근하려고 해서 엄청 헤맸던 문제인데, 색종이가 붙은 격자는 1, 붙지 않은 격자는 0으로 한 뒤 1의 개수만 구하면 된다.let [N, ...input] = require('fs').readFileSync('/dev/stdin').toString().split('\n').map((value) => value.trim())N = Number(N)input = input.map((value) => value.split(' ').map(Number))let board = new Array(100).fill(null).map(() => new Array(100).fill(0));for (let i = 0; i { r.forEach((c).. 2025. 1. 2.
백준 10798번 백준 10798번을 풀어보았다. 간단한 문제지만 특정 열에 문자가 존재하는지 여부를 다양하게 확인할 수 있었다. 1. input[r]의 길이로 확인let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map((value) => value.trim())let output = ''for (let c = 0; c  2. input[r]의 특정 열의 값으로 확인let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map((value) => value.trim())let output = ''for (let c = 0; c  이때 if (input[r].. 2025. 1. 1.
백준 2566번 백준 2566번을 풀어보았다. 다양한 풀이가 있겠지만 크게 다음으로 구분할 수 있다.입력값을 2차원 배열로 받기반복하며 비교하기 (반복문, forEach)Math.max 메소드 사용하기입력값을 1차원 배열로 받기반복하며 비교하기 (반복문, forEach)Math.max 메소드 사용하기reduce 메소드 사용하기1. 입력값을 2차원 배열로 받기 1-1. 반복하며 비교하기 ① 반복문let input = require('fs').readFileSync('example.txt').toString().split('\n').map((value) => value.trim().split(' ').map(Number))console.log(input)let max = -1, row = 0, column = 0for (l.. 2025. 1. 1.
백준 2738번 백준 2738번을 풀어보았다.let [NM, ...input] = require('fs').readFileSync('/dev/stdin').toString().split('\n')let [N, M] = NM.split(' ').map(Number)input = input.map((value) => value.trim().split(' ').map(Number))let output = ''for (let i = 0; i  결국 해결하긴 했지만 얼렁뚱땅 풀다보니 시행착오를 많이 겪었다. 1. 자료형에 유의하자. 처음에는 위 코드의 두 번째 줄과 세 번째 줄을 아래와 같이 작성하였고let [N, M] = NM.split(' ')input = input.map((value) => value.trim().spli.. 2024. 12. 30.