오블완 7

[JS] iterable? 그게 뭐죠?

들어가며자바스크립트에서 데이터 구조를 다루다보면 '이터러블(iterable)'이라는 개념을 마주할 수 있는데요. 이번 시간에는 이터러블이 무엇인지, 어떻게 작동하는지, 그리고 이를 활용하는 방법에 대해 알아보겠습니다. 이터러블? 그게 뭐죠?자바스크립트에서 '이터러블'하다는 건 객체(object)가 반복 가능한 구조임을 의미합니다. 즉, 이터러블 객체는 내부에 있는 요소들을 효율적으로 순회할 수 있는 메서드를 제공합니다. 모든 객체가 이터러블한 건 아니다일부 내장 타입(e.g. Array, Map)은 기본 반복 동작을 가지고 있는 이터러블 객체입니다. 반면, 일반 객체는 기본적으로 이터러블하지 않지만, 필요에 따라 이터러블로 만들 수 있습니다. 그럼 이터러블 객체가 되기 위해서는 어떤 조건을 갖춰야 할까요..

Javascript 2024.11.13

[프로그래머스] 등굣길

문제 https://school.programmers.co.kr/learn/courses/30/lessons/42898 예시 코드function solution(m, n, puddles) { const board = Array.from({ length: m + 1 }, () => Array(n + 1).fill(0)); for (let i = 0; i Array(n + 1).fill(0)); dp[0][1] = 1; const MOD = 1000000007; const PUDDLE = 1; for (let i = 1; i  풀이목적지까지 도달할 수 있는 최단 경로의 수를 구하는 문제입니다.2차원 좌표 위를 움직이고, 이동 방향이 오른쪽 또는 아래로 한정되어 있어 DP를 사용할 수 있습니다. ..

Coding Problem 2024.11.12

[JS] Object와 Map, 무엇을 선택해야 할까?

들어가며자바스크립트에서 데이터를 효율적으로 다루기 위해 다양한 데이터 구조를 사용하는데요. 그중 키-값 쌍을 저장할 때 쓰이는 Object와 Map이 있습니다. 이번 시간에는 Object와 Map이 무엇이 다르고, 선택하는 데 있어 도움이 될 기준에 대해 알아보도록 하겠습니다. 같아보여도 다르다Object는 Map과 많이 유사한데요. 두 데이터 구조 모두 키-값 쌍을 저장, 조회, 삭제할 수 있습니다.다만 몇 가지 주요한 차이점도 존재합니다.  MapObjectAccidentalKeys기본 키가 존재하지 않습니다. 사용자가 명시적으로 추가한 키만 포함됩니다.프로토타입을 가지므로 기본 키들이 존재합니다. 이로 인해 사용자 정의 키와 충돌할 가능성이 있습니다.( Object.create(null)로 이 문제..

Javascript 2024.11.11

[프로그래머스] 2021 Dev-Matching: 웹 백엔드 개발자(상반기) - 다단계 칫솔 판매

문제 https://school.programmers.co.kr/learn/courses/30/lessons/77486 예시 코드class Member { #name; #referral; #earning; constructor(name, referral) { this.#name = name; this.#referral = referral; this.#earning = 0; } getName() { return this.#name; } getReferral() { return this.#referral; } getEarning() { return this.#earning; } updateEarning(earning) { this.#earning +..

Coding Problem 2024.11.10

[JS] parameter와 argument는 뭐가 다를까?

들어가며개발을 하다 보면 parameter와 argument에 대해 많이 듣게 되는데요. 이 두 용어가 혼용되기도 하다 보니 헷갈릴 때가 있습니다.이번 시간에는 과연 이 둘이 대체 뭐가 다른지 알아보도록 하겠습니다. Paramater매개변수라고도 불립니다. 함수를 정의할 때 입력값을 받을 수 있는 변수입니다.function foo(parameter1, parameter2) { // some code} Argument인자라고도 불립니다. 함수를 호출할 때 함수에 입력으로 전달되는 값입니다. 값을 직접 전달할 수도 있고, 변수에 담아 전달할 수도 있습니다.const argument1 = 'say';foo(argument1, 'hi');function foo(parameter1, parameter2) { c..

Programming 2024.11.09

[프로그래머스] 2019 카카오 개발자 겨울 인턴십 - 징검다리 건너기

문제  https://school.programmers.co.kr/learn/courses/30/lessons/64062 풀이 첫 번째 시도단순히 건넌 사람의 수를 0부터 시작해서 징검다리를 순회하며 무사히 건널 수 있으면 카운트를 하나씩 증가시켰고, 이를 실패할 때까지 반복했습니다.그러나 일부 테스트케이스에서 시간초과로 실패했습니다.function solution(stones, k) { let answer = 0; while(true) { let pos = 0; let jump = 0; while(pos k) return answer; if(stones[pos] > 0) jump = 0; stones..

Coding Problem 2024.11.08

[JS] Maximum call stack size exceeded 에러

들어가며자바스크립트를 통해 코드를 자다 보면 종종 'RangeError: Maximum call stack size exceeded'라는 에러 메시지를 볼 수 있는데요.이번 시간에는 이 에러의 원인과 해결 방법에 대해 알아보도록 하겠습니다. 원인과 해결방법이 에러는 설명 그대로 최대 콜 스택 크기를 초과할 때 발생합니다. 자바스크립트 엔진은 함수를 호출할 때마다 '콜 스택'이라는 곳에 해당 함수 호출을 추가하고, 실행을 완료하면 제거하는데요. 이렇게 하나하나 쌓이는 걸 스택 프레임이라고 합니다. 이 스택 프레임이 너무 많이 쌓여 콜스택이 감당할 수 있는 최대 크기를 넘어서게 되면 문제가 발생합니다. 이 크기는 사용하는 엔진과 환경에 따라 달라질 수 있습니다. 주로 다음과 같은 경우에 발생합니다. 1. 함..

Javascript 2024.11.07