전체 글

프론트엔드, 백엔드, 앱, 웹 등을 다루는 Jukrap의 프로그래밍 및 개발 블로그. 사실 일상도 다룸.
개요문제 이름: 게임 맵 최단거리 (1844) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1844플랫폼: 프로그래머스알고리즘 분류: 깊이/너비 우선 탐색(DFS/BFS)소요 시간: 24시간... 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 전형적인 최단 경로 찾기 문제로, 너비 우선 탐색(BFS: Breadth-First Search) 알고리즘을 사용하여 해결할 수 있습니다. BFS는 그래프나 트리 구조에서 가장 가까운 노드부터 탐색하는 방법으로, 최단 경로를 찾는 데 적합합니다. 이 문제에서 게임 맵은 2차원 그래프로 표현할 수 있습니다. 각 칸은 그래프의 노드이며, 상하좌우로 인접한 칸들 사이에는 엣지가 있다고 볼 수 있습..
개요문제 이름: 타겟 넘버 (43165) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/43165플랫폼: 프로그래머스알고리즘 분류: 깊이/너비 우선 탐색(DFS/BFS)소요 시간: 5시간 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주어진 숫자들을 더하거나 빼서 특정 타겟 넘버를 만드는 모든 방법의 수를 찾는 것입니다. 이는 전형적인 깊이 우선 탐색(DFS) 또는 재귀를 사용하는 문제입니다. 문제 접근 방식각 숫자에 대해 더하거나 빼는 두 가지 선택지가 있습니다.모든 숫자에 대해 이 선택을 수행하고, 마지막에 결과가 타겟 넘버와 일치하는지 확인합니다.일치하는 경우의 수를 세어 반환합니다. 문제 지시 사항주어진 숫자 배열의 각 요소..
개요문제 이름: 큰 수 만들기 (42883) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42883플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 "큰 수 만들기" 문제로, 주어진 숫자에서 특정 개수의 숫자를 제거하여 가장 큰 수를 만드는 것이 목표입니다.이 문제를 해결하기 위해서는 그리디(Greedy) 알고리즘과 스택(Stack) 자료구조를 활용하는 것이 효과적입니다. 문제의 핵심은 다음과 같습니다.주어진 숫자열을 순회하면서, 각 숫자를 검사합니다.현재 숫자보다 작은 이전 숫자들을 제거합니다. (단, 제거 가능한 횟수 내에서)최종적으로 남은 숫자들 중 앞에..
개요문제 이름: 조이스틱 (42860) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42860플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 10시간 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 그리디(Greedy) 알고리즘과 최적화 문제를 결합한 형태입니다. 주어진 이름을 만들기 위해 조이스틱을 최소한으로 조작하는 방법을 찾아야 합니다. 문제를 해결하기 위해서는 두 가지 주요 부분을 고려해야 합니다.각 문자를 변경하기 위한 상하 이동 횟수문자 간 이동을 위한 좌우 이동 횟수 문제 접근 방식각 문자에 대해 'A'에서 해당 문자로 변경하는데 필요한 최소 이동 횟수를 계산합니다.좌우 이동의 최적 경로를 찾습니다...
개요문제 이름: 구명보트 (42885) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42885플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 5시간 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 구명보트를 최소한으로 사용하여 모든 사람을 구출하는 최적의 방법을 찾는 것입니다. 문제의 핵심은 다음과 같습니다.구명보트는 최대 2명까지 탈 수 있습니다.구명보트에는 무게 제한이 있습니다.최소한의 구명보트로 모든 사람을 구출해야 합니다.이 문제는 그리디(Greedy) 알고리즘을 사용하여 효율적으로 해결할 수 있습니다. 그리디 알고리즘은 각 단계에서 가장 최적인 선택을 하는 방식으로, 이 경우 가장 무거운 사람과 가장 가..
객체란?자바스크립트는 객체 기반의 프로그래밍 언어다. 자바스크립트를 구성하는 거의 모든 것이 객체이며, 원시 값을 제외한 나머지 값(함수, 배열, 정규 표현식 등)은 모두 객체에 속한다. 객체 타입의 특징복합적인 자료구조: 객체 타입은 다양한 타입의 값(원시 값 또는 다른 객체)을 하나의 단위로 구성한 복합적인 자료구조다.변경 가능성: 원시 타입의 값은 변경 불가능한 값이지만, 객체 타입의 값은 변경 가능한 값이다. 객체의 구조var person = { name: 'Lee', // 프로퍼티 age: 20 // 프로퍼티};객체는 0개 이상의 프로퍼티로 구성된 집합이다. 프로퍼티는 키(key)와 값(value)으로 구성된다. var counter = { num: 0, ..
타입 변환과 단축 평가타입 변환이란?자바스크립트의 모든 값은 타입을 가진다. 값의 타입은 개발자의 의도에 따라 다른 타입으로 변환할 수 있다.  var x = 10;// 명시적 타입 변환// 숫자를 문자열로 타입 캐스팅한다.var str = x.toString();console.log(typeof str, str); // string 10// x 변수의 값이 변경된 것은 아니다.console.log(typeof x, x); // number 10개발자가 의도적으로 값의 타입을 변환하는 것을 명시적 타입 변환(explicit coercion) 또는 타입 캐스팅(type casting)이라고 한다. var x = 10;// 암묵적 타입 변환// 문자열 연결 연산자는 숫자 타입 x의 값을 바탕으로 새로운 문자..
개요문제 이름: 모음 사전 (84512) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/84512플랫폼: 프로그래머스알고리즘 분류: 완전탐색소요 시간: 2시간 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 모음으로 이루어진 길이 5 이하의 모든 단어가 수록된 사전에서, 주어진 단어의 순서를 찾는 문제입니다. 이 문제를 해결하기 위해서는 사전에서 단어의 순서를 파악하는 것이 중요합니다.문제 접근 방식은 다음과 같습니다.모음의 순서를 정의합니다. (예: A, E, I, O, U)주어진 단어의 각 글자를 모음 순서에 따라 변환합니다.변환된 값을 이용하여 사전에서의 순서를 계산합니다.이 문제는 수학적 규칙을 찾아내는 것이 핵심입니다..
서론제어문(control flow statement)은 조건에 따라 코드 블록을 실행(조건문)하거나 반복 실행(반복문)할 때 사용한다. 일반적으로 코드는 위에서 아래 방향으로 순차적으로 실행되지만, 제어문을 사용하면 코드의 실행 흐름을 인위적으로 제어할 수 있다.// 제어문 예시var answer = 5;for (let i = 0 ; i 하지만 실행 순서가 변경되는 것은 코드의 흐름을 이해하기 어렵게 만들어 가독성을 해치는 단점이 있다. forEach, map, filter, reduce와 같은 고차 함수를 사용한 함수형 프로그래밍 기법에서는 제어문의 사용을 억제하여 복잡성을 해결하려고 한다. 블록문블록문(block statement/compound statement)은 0개 이상의 문을 중괄호로 묶은 ..
서론연산자는 하나 이상의 표현식을 대상으로 산술, 할당, 비교, 논리, 타입, 지수 연산 등을 수행해 하나의 값을 만든다. 이때 연산의 대상을 피연산자라고 한다.피연산자는 값으로 평가될 수 있는 표현식이어야 한다. 그리고 피연산자와 연산자의 조합으로 이뤄진 연산자 표현식도 값으로 평가될 수 있는 표현식이다.연산자는 "피연산자를 연산하여 새로운 값을 만든다"는 동사의 역할을 하고, 피연산자는 "값"이라는 명사의 역할을 한다고 볼 수 있다. // 산술 연산자 5 * 4 // -> 20// 문자열 연결 연산자'My name is ' + 'Lee' // -> 'My name is Lee'// 할당 연산자color = 'red' // -> 'red'// 비교 연산자 3 > 5 // -> false// 논리 연산자..
개요문제 이름: 주식가격 (42584) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42584플랫폼: 프로그래머스알고리즘 분류: 스택/큐소요 시간: 1시간 10분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주식 가격의 변동을 배열로 받아, 각 시점마다 가격이 떨어지지 않은 기간이 몇 초인지를 구하는 문제입니다. 문제를 해결하기 위해서는 배열을 순회하면서 각 시점마다 이후의 가격들을 비교하여 가격이 떨어지는 시점을 찾아야 합니다. 문제 해결을 위해 다음과 같은 접근 방식을 사용할 수 있습니다...!이중 반복문을 사용하여 각 시점마다 이후의 가격들을 비교하는 방법 (브루트 포스)스택을 사용하여 가격이 떨어지는 시점을 효율적으로 찾..
서론데이터 타입(Data Type)은 값의 종류를 말한다. 자바스크립트의 모든 값은 데이터 타입을 갖는다. ES6에서는 7개의 데이터 타입을 제공하며, 이는 원시 타입(Primitive Type)과 객체 타입(Object/Reference Type)으로 분류할 수 있다.원시 타입에는 다음과 같은 6가지 타입이 있다.숫자(Number) 타입: 숫자, 정수와 실수를 구분하지 않고 하나의 숫자 타입만 존재한다. 모든 숫자는 실수로 처리된다.문자열(String) 타입: 문자열을 나타낸다.불리언(Boolean) 타입: 논리적 참(true)과 거짓(false)을 나타낸다.undefined 타입: var 키워드로 선언된 변수에 암묵적으로 할당되는 값이다.null 타입: 값이 없음을 의도적으로 명시할 때 사용하는 값이..
개요원문 제목: Managing My Motivation, as a Solo Dev원문 링크: https://mbuffett.com/posts/maintaining-motivation/작성자: Marcus Buffett (marcusbuffett)번역 상태: 번역기 돌림. 틀렸으면 님말이 맞음. (원문 권장) 개발자에게 있어서 동기 부여로 좋은 게시글을 발견하여서 한 번 가져와봤습니다. ADHD을 앓는 것으로 추정되는 해외 개발자가 작성하였는데,저 또한 부분적으로 활용하는 동기부여법이 있어서 상당히 흥미로웠습니다. 한 번 정도는 읽어봐도 괜찮은 내용이라고 생각합니다.  글 전문【 1인 개발자로서 동기 부여 관리하기 】 1인 개발자로 일하면서 가장 큰 어려움 중 하나는 동기부여를 유지하는 것입니다. 저는 ..
값값(value)은 식(표현식, expression)이 평가(evaluate)되어 생성된 결과를 말한다. 평가란 식을 해석해서 값을 생성하거나 참조하는 것을 의미한다. 예를 들어 '10 + 20'이라는 식은 평가되어 숫자 값 30을 생성한다.모든 값은 데이터 타입을 가지며, 메모리에 2진수 즉 비트(bit)의 나열로 저장된다. 메모리에 저장된 값은 데이터 타입에 따라 다르게 해석될 수 있다. 예를 들어 메모리에 저장된 값 '0100 0001'을 숫자로 해석하면 65지만, 문자로 해석하면 'A'이다. 변수는 하나의 값을 저장하기 위해 확보한 메모리 공간 자체 또는 그 메모리 공간을 식별하기 위해 붙인 이름이다. 따라서 변수에 할당되는 것은 값이다.var sum = 10 + 20; // 변수에는 10 + ..
개요문제 이름: 더 맵게 (42626) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42626플랫폼: 프로그래머스알고리즘 분류: 힙소요 시간: 48시간(...)(2일 걸림) 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 우선순위 큐 또는 힙(Heap)을 사용하여 해결할 수 있는 알고리즘 문제입니다. 문제에서는 음식의 스코빌 지수를 모두 K 이상으로 만들기 위해 가장 맵지 않은 두 음식을 특별한 방법으로 섞어야 합니다. 이때 섞는 과정을 최소화하는 것이 목표입니다. 문제를 효과적으로 해결하기 위해서는 항상 스코빌 지수가 가장 낮은 두 음식을 선택해야 합니다. 이를 위해 우선순위 큐 또는 힙을 사용할 수 있습니다. 힙은 부모 노드의 ..
Jukrap
뒹굴뒹굴 공간