전체보기

개요문제 이름: 무인도 여행 (154540) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/154540플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 5시간 문제 전문설명제한사항입출력  문제 풀이해설이 문제는 2차원 격자 형태의 지도에서 연결된 무인도를 탐색하고, 각 무인도에서 최대로 머물 수 있는 일수를 계산하는 문제입니다. 문제를 해결하기 위해서는 그래프 탐색 알고리즘 중 하나인 깊이 우선 탐색(DFS)을 활용합니다. DFS는 그래프의 한 노드에서 시작하여 인접한 노드를 먼저 탐색하는 방식으로 진행됩니다. 즉, 한 방향으로 갈 수 있을 때까지 깊이 탐색하다가 더 이상 갈 수 없게 되면 이전 노드로 돌아와서 다른 방향으로 탐색을 ..
개요문제 이름: [3차] 방금그곡 (17683) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/17683플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 7시간 문제 전문설명입출력  문제 풀이해설이 문제는 네오가 기억하고 있는 멜로디를 바탕으로 실제로 방송된 음악을 찾는 문제입니다. 문제 해결을 위해서는 주어진 음악 정보를 바탕으로 실제로 재생된 멜로디를 구하고, 네오가 기억하고 있는 멜로디가 그 안에 포함되어 있는지를 확인해야 합니다. 문제 해결을 위한 접근 방식은 다음과 같습니다.네오가 기억하고 있는 멜로디와 음악 정보의 멜로디에서 '#'이 붙은 음을 소문자로 변환합니다.이는 같은 음임에도 불구하고 '#'의 유무에 따라 다른 음으..
소스코드의 타입ECMAScript 사양은 소스코드를 4가지 타입으로 구분한다.전역 코드(global code): 전역에 존재하는 소스코드. 전역에 정의된 함수, 클래스 등의 내부 코드는 포함되지 않는다.함수 코드(function code): 함수 내부에 존재하는 소스코드. 함수 내부에 중첩된 함수, 클래스 등의 내부 코드는 포함되지 않는다.eval 코드(eval code): 빌트인 전역 함수인 eval 함수에 인수로 전달되어 실행되는 소스코드.모듈 코드(module code): 모듈 내부에 존재하는 소스코드. 모듈 내부의 함수, 클래스 등의 내부 코드는 포함되지 않는다.소스코드(실행 가능한 코드)를 4가지 타입으로 구분하는 이유는 소스코드의 타입에 따라 실행 컨텍스트를 생성하는 과정과 관리 내용이 다르기..
개요문제 이름: 귤 고르기 (138476)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/138476플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 1시간 문제 전문설명제한사항입출력  문제 풀이해설이 문제는 귤의 크기별 개수를 파악하여, 최소한의 종류로 k개의 귤을 고르는 문제입니다. 문제 해결을 위해 먼저 귤의 크기별 개수를 파악하고, 개수가 많은 순서대로 귤을 고르는 그리디 알고리즘을 적용할 수 있습니다. 문제 접근 방식은 다음과 같습니다.귤의 크기별 개수를 파악하기 위해 객체(sizeCount)를 생성합니다.주어진 배열(tangerine)을 순회하면서 각 크기의 귤이 몇 개 있는지 객체에 저장합니다.객체의 값(귤의 개수)을 배열..
this 키워드객체 지향 프로그래밍에서 객체는 상태(state)를 나타내는 프로퍼티와 동작(behavior)을 나타내는 메서드를 하나의 논리적인 단위로 묶은 복합적인 자료구조이다. 동작을 나타내는 메서드는 자신이 속한 객체의 상태, 즉 프로퍼티를 참조하고 변경할 수 있어야 한다. 이때 메서드가 자신이 속한 객체의 프로퍼티를 참조하려면 먼저 자신이 속한 객체를 가리키는 식별자를 참조할 수 있어야 한다. const circle = { // 프로퍼티: 객체 고유의 상태 데이터 radius: 5, // 메서드: 상태 데이터를 참조하고 조작하는 동작 getDiameter() { // 이 메서드가 자신이 속한 객체의 프로퍼티나 다른 메서드를 참조하려면 // 자신이 속한 객체인 circle을 참조..
자바스크립트 객체의 분류자바스크립트 객체는 다음과 같이 크게 3가지로 분류할 수 있다. 표준 빌트인 객체(standard built-in objects/native objects/global objects)ECMAScript 사양에 정의된 객체로, 애플리케이션 전역의 공통 기능을 제공한다.자바스크립트 실행 환경(브라우저나 Node.js)과 관계없이 언제나 사용할 수 있다.표준 빌트인 객체는 전역 객체의 프로퍼티로 제공되므로 별도의 선언 없이 전역 변수처럼 언제나 참조할 수 있다. 호스트 객체(host objects)ECMAScript 사양에 정의되어 있지는 않지만, 자바스크립트 실행 환경에서 추가로 제공하는 객체를 말한다.브라우저 환경에서 DOM, BOM, Canvas, XMLHttpRequest, fe..
개요문제 이름: 멀쩡한 사각형 (62048)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/62048플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 40분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 격자 형태로 그어진 직사각형 종이에서 대각선으로 잘라낸 후 사용할 수 있는 정사각형의 개수를 구하는 문제입니다. 문제 해결을 위해서는 전체 사각형의 개수에서 대각선에 의해 잘린 사각형의 개수를 빼는 방식을 사용할 수 있습니다. 문제에서 주어진 조건은 다음과 같습니다.가로 길이가 Wcm, 세로 길이가 Hcm인 직사각형 종이가 있습니다.종이에는 가로, 세로 방향과 평행하게 격자 형태로 선이 그어져 있습니다.모든 격자칸은 1cm x 1c..
개요문제 이름: 예상 대진표 (12985)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12985플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 토너먼트 형식의 대회에서 두 참가자가 몇 번째 라운드에서 만나는지를 찾는 문제입니다. 문제를 해결하기 위해서는 라운드를 진행하면서 A와 B의 위치를 업데이트하는 방식을 사용할 수 있습니다. 문제에서 주어진 조건은 다음과 같습니다.N명의 참가자는 1부터 N번까지 번호를 배정받습니다.1번 2번, 3번 4번, ... , N-1번N번의 참가자끼리 게임을 진행합니다.각 게임에서 이긴 사람은 다음 라운드에 진출합니다.다음 라운드에 진출할 참..
개요자바스크립트는 명령형, 함수형, 프로토타입 기반 객체지향 프로그래밍을 지원하는 멀티 패러다임 프로그래밍 언어다. 자바스크립트를 이루고 있는 거의 "모든 것"이 객체이며, 객체 기반의 프로그래밍 언어라고 할 수 있다.  객체지향 프로그래밍객체지향 프로그래밍은 객체의 집합으로 프로그램을 표현하려는 프로그래밍 패러다임을 말한다. 객체지향 프로그래밍에서는 실세계의 실체(사물이나 개념)를 인식하는데, 실체는 특징이나 성질을 나타내는 속성을 가지고 있고 이를 통해 실체를 인식하거나 구별한다. 다양한 속성 중에서 프로그램에 필요한 속성만 간추려 내어 표현하는 것을 추상화라고 한다. 이처럼 속성을 통해 여러 개의 값을 하나의 단위로 구성한 복합적인 자료구조를 객체라고 하며, 객체의 상태를 프로퍼티, 동작을 메서드라..
일급 객체자바스크립트에서는 다음과 같은 조건을 만족하는 객체를 일급 객체라고 한다.무명의 리터럴로 생성할 수 있다. 즉, 런타임에 생성이 가능하다.변수나 자료 구조(객체, 배열 등)에 저장할 수 있다.함수의 매개변수에 전달할 수 있다.함수의 반환값으로 사용할 수 있다.자바스크립트의 함수는 위의 조건을 모두 만족하므로 일급 객체이다. 다음 코드를 통해 함수가 일급 객체임을 확인할 수 있다.// 1. 함수는 무명의 리터럴로 생성할 수 있다.// 2. 함수는 변수에 저장할 수 있다.// 런타임(할당 단계)에 함수 리터럴이 평가되어 함수 객체가 생성되고 변수에 할당된다.const increase = function (num) { return ++num;};const decrease = function (num..
개요문제 이름: 이진 변환 반복하기 (70129)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/70129플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 1시간 문제 전문설명제한사항입출력  문제 풀이해설이 문제는 문자열 변환과 반복 처리를 요구하는 알고리즘 문제입니다. 주어진 이진 문자열에 대해 특정 규칙에 따라 변환을 반복하고, 그 과정에서 발생하는 변화를 추적해야 합니다. 문제를 해결하기 위해서는 아래와 같은 접근 방식이 필요합니다.문자열에서 0을 제거하는 과정남은 1의 개수를 세는 과정1의 개수를 다시 이진 문자열로 변환하는 과정이 과정을 반복하면서 변환 횟수와 제거된 0의 개수를 추적하는 과정 문제에서 실질적으로 요구하는 내용..
서론객체 리터럴에 의한 객체 생성 방식의 단점을 보완하기 위해 생성자 함수에 의한 객체 생성 방식이 있다. Object 생성자 함수new 연산자와 함께 Object 생성자 함수를 호출하면 빈 객체를 생성하여 반환한다. 이후 프로퍼티 또는 메서드를 추가하여 객체를 완성할 수 있다.// 빈 객체의 생성const person = new Object();// 프로퍼티 추가person.name = "Lee";person.sayHello = function () { console.log("Hi! My name is " + this.name);};console.log(person); // {name: "Lee", sayHello: ƒ}person.sayHello(); // Hi! My name is Lee생성자 함수..
var 키워드로 선언한 변수의 문제점ES5까지 변수를 선언할 수 있는 유일한 방법은 var 키워드였다. var 키워드는 다음과 같은 특징이 있는데, 이는 다른 언어와 차별되는 특징으로 주의를 기울이지 않으면 심각한 문제를 일으킬 수 있다. 변수 중복 선언 허용var x = 1;var y = 1;var x = 100; // 초기화문이 있는 변수 선언문은 var 키워드가 없는 것처럼 동작한다.var y; // 초기화문이 없는 변수 선언문은 무시된다.console.log(x); // 100console.log(y); // 1var 키워드로 선언한 변수는 중복 선언이 가능하다. var 키워드로 선언된 변수는 같은 스코프 내에서 중복 선언을 허용한다. 초기화문이 있는 변수 선언문은 자바스크립트 엔진..
개요문제 이름: 약수의 합 (12928) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12928플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 20분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주어진 정수 n의 모든 약수를 찾아 그 합을 구하는 문제입니다. 약수란 어떤 수를 나누어 떨어지게 하는 수를 말합니다. 예를 들어, 12의 약수는 1, 2, 3, 4, 6, 12입니다. 이 문제를 해결하기 위한 기본적인 접근 방식은 1부터 n까지의 모든 수를 순회하면서 n을 나누어 떨어지게 하는 수를 찾아 더하는 것입니다. 하지만 이 방법은 n이 커질수록 비효율적일 수 있습니다. 더 효율적인 방법은 n의 제곱근까지만 순회하는 것입니다..
개요문제 이름: 최댓값과 최솟값 (12939) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12939플랫폼: 프로그래머스알고리즘 분류: 일반소요 시간: 2분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주어진 문자열에서 최솟값과 최댓값을 찾아 특정 형식으로 반환하는 것이 목표입니다. 문제를 해결하기 위해 다음과 같은 접근 방식을 사용할 수 있습니다.문자열을 숫자 배열로 변환배열에서 최솟값과 최댓값 찾기결과를 지정된 형식으로 반환이 문제는 문자열 처리, 배열 조작, 그리고 최솟값과 최댓값을 찾는 알고리즘을 결합하여 해결할 수 있습니다. 주어진 제한 조건에 따라 문자열에는 둘 이상의 정수가 공백으로 구분되어 있으므로, 이를 고려하여..
변수의 생명 주기변수는 선언에 의해 생성되고, 할당을 통해 값을 갖는다. 그리고 언젠가 소멸한다. 즉, 변수에는 생명 주기(life cycle)가 존재한다. 만약 변수의 생명 주기가 없다면 한번 선언된 변수는 프로그램이 종료되지 않는 한 영원히 메모리 공간을 점유하게 된다. 변수는 자신이 선언된 위치에서 생성되고 소멸한다. 전역 변수의 생명 주기는 애플리케이션의 생명 주기와 같다. 하지만 함수 내부에서 선언된 지역 변수는 함수가 호출되면 생성되고 함수가 종료하면 소멸한다. 지역 변수의 생명 주기변수 선언은 선언문이 어디에 있든 상관없이 런타임 이전인 소스코드의 평가 과정에서 자바스크립트 엔진에 의해 가장 먼저 실행된다. 하지만 이는 전역 변수에 한정된 것이다. 함수 내부에서 선언한 지역 변수는 함수가 호..
스코프란?스코프(scope)는 자바스크립트를 포함한 모든 프로그래밍 언어의 기본적이며 중요한 개념이다. 스코프는 변수와 함수의 유효 범위를 의미한다. 다시 말해, 변수와 함수가 어디까지 참조되고 사용될 수 있는지를 나타내는 것이 스코프이다. 모든 식별자(변수 이름, 함수 이름, 클래스 이름 등)는 자신이 선언된 위치에 따라 다른 코드에서 식별자를 참조할 수 있는 유효 범위가 결정된다. 이 유효 범위를 스코프라고 한다. 즉, 스코프는 식별자가 유효한 범위를 말한다. 스코프 내에서 식별자는 유일해야 하지만, 다른 스코프에서는 같은 이름의 식별자를 사용할 수 있다. 즉, 스코프는 네임스페이스(namespace)의 역할을 한다. 네임스페이스란 개체를 구분할 수 있는 범위를 나타내는 말로, 일반적으로 하나의 이름..
개요문제 이름: 이중우선순위큐 (42628) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42628플랫폼: 프로그래머스알고리즘 분류: 힙(Heap)소요 시간: 30시간 문제 전문설명 제한사항 입출력 문제 풀이해설이 문제는 이중 우선순위 큐(Double-ended Priority Queue)를 구현하는 문제다. 이중 우선순위 큐는 일반적인 우선순위 큐와 달리, 최댓값과 최솟값을 모두 O(1) 시간 복잡도로 삭제할 수 있는 자료구조다. 이 문제에서는 최대 힙(Max Heap)과 최소 힙(Min Heap)을 활용하여 이중 우선순위 큐를 구현해야 한다. 최대 힙은 부모 노드의 값이 자식 노드의 값보다 크거나 같은 완전 이진 트리이고, 최소 ..
함수란?함수는 자바스크립트에서 가장 중요한 핵심 개념이다. 스코프, 실행 컨텍스트, 클로저, 생성자 함수에 의한 객체 생성, 메서드, this, 프로토타입, 모듈화 등 자바스크립트의 근간을 이루는 개념들이 모두 함수와 깊은 관련이 있다. 프로그래밍 언어의 함수는 일련의 과정을 문(statement)으로 구현하고 코드 블록으로 감싸서 하나의 실행 단위로 정의한 것이다. 함수 내부로 입력을 전달받는 변수를 매개변수(parameter), 입력을 인수(argument), 출력을 반환값(return value)이라 한다. // 함수 정의function add(x, y) { return x + y;}// 함수 호출var result = add(2, 5);console.log(result); // 7함수의 정의와 ..
서론자바스크립트는 7가지 데이터 타입을 제공하며, 이는 크게 원시 타입과 객체 타입으로 구분할 수 있다. 원시 타입에는 숫자, 문자열, 불리언, null, undefined, 심벌이 있으며, 나머지는 객체 타입에 속한다. 이 두 타입은 세 가지 주요 측면에서 차이를 보인다. 변경 가능성: 원시 값은 변경 불가능한(immutable) 값이다. 반면, 객체는 변경 가능한(mutable) 값이다. 변수 할당: 원시 값을 변수에 할당하면 변수에는 실제 값이 저장된다. 객체를 변수에 할당하면 참조 값이 저장된다. 값의 전달: 원시 값을 갖는 변수를 다른 변수에 할당하면 값에 의한 전달(pass by value)이 일어난다. 객체를 가리키는 변수를 다른 변수에 할당하면 참조에 의한 전달(pass by referen..
Jukrap
'분류 전체보기' 카테고리의 글 목록 (3 Page)