본문 바로가기

분류 전체보기85

백준 11005번 백준 11005번을 풀어보았다. 2745번이 N진법 수를 10진법 수로 변환하는 유형이었다면, 11005번은 10진법 수를 N진법 수로 변환하는 유형이다. 각각을 변환하는 과정을 수학적으로 나타내면 다음과 같다.   11005번은 크게 두 가지 풀이로 정리할 수 있다.수학적 풀이toString 메소드 1. 수학적 풀이 아래 두 풀이의 근본적인 접근은 동일하다. 다만 1-2번은 수학적 풀이를 그대로 표현하고 1-1번은 수학적 풀이를 조금 풀어서 표현하였다. 1-1.let [N, B] = require('fs').readFileSync('/dev/stdin').toString().split(' ').map(Number)let exponent = 0while (N >= B ** exponent) { expo.. 2025. 1. 9.
클로저란 무엇인가요? 클로저를 이해하기 위해선 스코프 체인, 렉시컬 환경에 대한 이해가 선행되어야 한다. 차근차근 이해해보자. 스코프 체인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로 케이스를 구분하는 방법에 따라 크게 4가지로 구분할 수 있다. 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.