전체 글

프론트엔드, 백엔드, 앱, 웹 등을 다루는 Jukrap의 프로그래밍 및 개발 블로그. 사실 일상도 다룸.
개요문제 이름: 더 맵게 (42626) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42626플랫폼: 프로그래머스알고리즘 분류: 힙소요 시간: 48시간(...)(2일 걸림) 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 우선순위 큐 또는 힙(Heap)을 사용하여 해결할 수 있는 알고리즘 문제입니다. 문제에서는 음식의 스코빌 지수를 모두 K 이상으로 만들기 위해 가장 맵지 않은 두 음식을 특별한 방법으로 섞어야 합니다. 이때 섞는 과정을 최소화하는 것이 목표입니다. 문제를 효과적으로 해결하기 위해서는 항상 스코빌 지수가 가장 낮은 두 음식을 선택해야 합니다. 이를 위해 우선순위 큐 또는 힙을 사용할 수 있습니다. 힙은 부모 노드의 ..
변수란 무엇인가? 왜 필요한가?변수는 프로그래밍에서 데이터를 저장하고 참조하는 기본적이고 핵심적인 개념이다. 변수를 사용하면 값을 메모리에 저장하고, 필요할 때 해당 값을 참조할 수 있다.변수의 중요 개념변수 선언: 변수를 사용하기 위해 컴파일러에게 변수의 존재를 알리는 작업. 변수의 이름과 데이터 타입을 명시한다.변수명: 메모리에 저장된 값을 참조하기 위해 개발자가 붙인 이름. 의미 있고 명확한 변수명은 코드의 가독성을 높인다.값 할당: 변수에 특정 값을 저장하는 작업. 할당 연산자(=)를 사용한다.값 참조: 변수에 저장된 값을 읽어오는 작업. 변수명을 통해 값에 접근한다.컴퓨터는 CPU를 통해 연산을 수행하고, 메모리를 통해 데이터를 저장하고 읽어온다. 예를 들어 '10 + 20'이라는 연산을 수행할..
개요문제 이름: 체육복 (42862) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42862플랫폼: 프로그래머스알고리즘 분류: 탐욕법(Greedy)소요 시간: 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 탐욕법(Greedy, 그리디) 알고리즘을 사용하여야 합니다. 탐욕법 알고리즘은 현재 상황에서 가장 최선의 선택을 하는 방식으로, 문제를 단계별로 해결해 나가는 알고리즘입니다. 문제에서 요구하는 사항은 다음과 같은 상황입니다.전체 학생 수 n명 중에서 체육복을 도난당한 학생들의 번호가 lost 배열에, 여벌 체육복을 가져온 학생들의 번호가 reserve 배열에 주어집니다.체육복을 빌려줄 때는 바로 앞번호의 학생이나 바로 뒷..
개요문제 이름: 모의고사 (42840) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42840플랫폼: 프로그래머스알고리즘 분류: 완전탐색소요 시간: 4시간 20분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 주어진 정답 배열과 각 수포자의 찍기 패턴을 비교하여 가장 많은 문제를 맞힌 사람을 찾는 완전탐색 알고리즘 문제입니다. 각 수포자의 찍기 패턴은 일정한 규칙을 가지고 반복되므로, 이를 활용하여 정답과 비교할 수 있습니다. 문제 해결을 위해 다음과 같은 접근 방식을 사용할 수 있습니다.각 수포자의 찍기 패턴을 배열로 정의합니다.정답 배열을 순회하면서 각 수포자의 찍기 패턴과 비교하여 맞힌 문제의 개수를 카운트합니다.가장 많은 ..
개요문제 이름: 최소직사각형 (86491) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/86491플랫폼: 프로그래머스알고리즘 분류: 완전탐색소요 시간: 10분(...) 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 2차원 배열로 주어진 명함의 가로, 세로 길이를 이용하여 모든 명함을 수납할 수 있는 가장 작은 지갑의 크기를 구하는 알고리즘 문제입니다. 문제 해결을 위해서는 다음과 같은 접근 방식을 사용할 수 있습니다.각 명함의 가로와 세로 길이를 비교하여 긴 쪽을 가로로, 짧은 쪽을 세로로 회전시킵니다.회전시킨 명함들 중 가장 긴 가로 길이와 가장 긴 세로 길이를 찾습니다.찾은 가장 긴 가로 길이와 세로 길이를 곱하여 지갑의 크기..
개요문제 이름: K번째수 (42748) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42748플랫폼: 프로그래머스알고리즘 분류: 정렬소요 시간: 30분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 배열과 정렬, 인덱싱을 다루는 알고리즘 문제입니다. 주어진 배열에서 특정 구간을 잘라내고, 잘라낸 부분을 정렬한 후, 정렬된 배열에서 지정된 인덱스의 값을 찾아내는 것이 목표입니다. 문제에서 요구하는 사항을 정리하면 다음과 같습니다.배열 array와 2차원 배열 commands가 주어집니다.commands의 각 원소는 [i, j, k]로 이루어져 있습니다.array의 i번째부터 j번째까지 자릅니다. (i, j는 1부터 시작)자른 배열을..
개요문제 이름: 같은 숫자는 싫어 (12906) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12906플랫폼: 프로그래머스알고리즘 분류: 스택/큐소요 시간: 1시간 15분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 배열에서 연속적으로 나타나는 중복 숫자를 제거하고 남은 숫자들을 원래 순서대로 반환하는 알고리즘 문제입니다. 문제에서 요구하는 사항을 정리하면 다음과 같습니다.배열에서 연속적으로 나타나는 숫자는 하나만 남기고 제거한다.제거된 후 남은 숫자들은 기존 배열의 순서를 유지해야 한다.이 문제를 해결하기 위해 스택(Stack) 자료구조를 활용할 수 있습니다. 스택은 후입선출(LIFO - Last In First Out)의 특..
개요문제 이름: 완주하지 못한 선수 (42576) 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/42576플랫폼: 프로그래머스알고리즘 분류: 해시소요 시간: 50분 문제 전문설명제한사항입출력 문제 풀이해설이 문제는 마라톤 경기에 참가한 선수들 중 완주하지 못한 한 명의 선수를 찾아내는 알고리즘 문제입니다. 참가자 배열과 완주자 배열이 주어지며, 완주하지 못한 선수의 이름을 반환해야 합니다.문제를 해결하기 위해 '해시 알고리즘'을 사용할 수 있습니다. 해시 알고리즘은 키(key)와 값(value)을 매핑하여 데이터를 저장하고 검색하는 알고리즘으로, 빠른 검색 속도를 제공합니다. 이 문제에서는 참가자의 이름을 키로, 참가자의 수를 값으로 ..
개요문제 이름: 폰켓몬 (1845)문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/1845플랫폼: 프로그래머스알고리즘 분류: 해시소요 시간: 20분 문제 전문설명제한사항입출력 문제 풀이해설해당 문제는 배열에서 주어진 조건에 맞게 원소를 선택하여 최대한 많은 종류의 원소를 포함하도록 하는 알고리즘 문제입니다. 이를 해결하기 위해서는 '해시(Hash) 알고리즘'을 활용할 수 있습니다. 해시 알고리즘이란 키(key)와 값(value)을 매핑하여 데이터를 저장하고 검색하는 알고리즘입니다. 해시 함수를 사용하여 키를 해시값으로 변환하고, 이를 인덱스로 사용하여 데이터에 접근합니다. 해시 알고리즘을 사용하면 데이터의 중복을 효율적으로 제거하고 빠른..
서론FFmpeg은 오디오 및 비디오를 다루는 라이브러리로, 다양한 멀티미디어 형식의 인코딩, 디코딩, 변환, 스트리밍 등의 작업을 수행할 수 있도록 도와준다. 그리고 FFmpeg WASM은 FFmpeg(FFmpeg)을 웹 어셈블리(WebAssembly) 형식으로 컴파일한 라이브러리이다. 즉, 오디오 및 비디오와 관련된 라이브러리를 웹 클라이언트에서도 나름 자유롭게 쓸 수 있게 만든 것이다. 나는 최근 프로젝트가 이것과 관련되어 있어서 이리저리 만지던 참이었다.그러다가 FFmpeg WASM의 디코딩/인코딩 속도를 과연 높일 수 있을지에 대한 의문이 문뜩 들었다. FFmpeg WASM의 디코딩/인코딩 속도가 워낙 CPU를 학대하는데다가, 워낙 느리기 때문이었다.그렇기에 트랜스코드(특정 형식의 파일을 다른 형..
서론 가계부 개발의 마지막이다. 이제 이게 끝나면 보다 더 심화적인 개발에 들어간다고 해도 무방하다. 그렇기에 기왕 개발하는 김에 이것저것 수정도 해볼 생각이다. 참고로 이번 TIL은 개발 지식보다는 소감이 위주이다. 이번 일자의 프로그래머스 데브코스는 가계부 기능 개발이다. 관리자 권한 실행 이제야 깨달은 것 중에 하나인데, json-server는 관리자 권한으로 실행된 터미널이 필요한 것 같다. 이건 일부 사람에만 해당할 수도 있지만, 어쨌거나 나의 경우에는 관리자 권한으로 실행한 뒤에야 서버가 작동했다. 그 전까지는 'Network Error', name: 'AxiosError'라는 것이 발생했었다. 소감 솔직하게 말하자면 따라치는 것 이상의 수준에는 도달하지 못한 것 같다. 워낙 쉴세 없이 코드들..
서론 이번 일자 서론은 생략이다...! 분량이 많은 관계로 어서 써야하기 때문이다. 이번 일자의 프로그래머스 데브코스는 Tech Spec 및 프로젝트 세팅이다. 기술 설명서 (Tech Spec) Tech Flow 기술적인 Flow는 다음과 같은 다섯 가지 단계로 나눌 수 있다. 서비스에 접근한다. 유저가 액션을 하면, 서비스는 액션을 입력받는다. 입력받은 데이터를 서버에 저장한다. 현재 자산을 서버로부터 받아온다. 서버로부터 받은 자산 데이터를 화면에 보여준다. 이러한 내용을 상세하게 설명하도록 하겠다. (1) 서비스에 접근 서비스에 접근한다. 구현 목표: 유저가 브라우저에서 화면을 확인할 수 있도록 한다. 필요 유저가 브라우저에 접근한다. 유저가 확인할 수 있는 화면이 그려진다. Tech Flow 1...
서론 개인적인 사정 + 귀차니즘으로 미뤘던 나머지 며칠 치 분량이나 밀리게 되었다. 그나마 다행인 점은 실습으로 넘어가고 있는지라 쓸 것이 그리 많지 않다는 점이다. 그래도 당장 밀린 것은 변치 않으니 향후 서론과 사족은 가능한 한 최소화할 생각이다. 참고로 당분간은 실습 내용이 주를 이룬다. 코드를 여기에 작성했다간 화끈하게 삭제 조치가 이뤄질 가능성이 크다. 개발 지식보다는 정석적인 TIL(학습 주제, 주요 메모 사항 소개, 공부하며 어려웠던 내용) 혹은 팁이 대부분 내용을 이룰 예정이다. 이번 일자의 프로그래머스 데브코스는 가계부 구현하기 & 자바스크립트 기초이다. 느낌표 두 개(!!) true //true !true //false !!true //true false //false !false //..
서론 프로그래머스 데브코스 11일차의 마지막 파트이다. 이걸 적느라 3일치 분량 정리가 밀렸다니 믿기지 않을 정도다. 일단 어서 파트 3 TIL을 시작하도록 하겠다. 이번 일자의 프로그래머스 데브코스는 자바스크립트 기초 - 객체와 빌트인 객체 그리고 매커니즘이다. 스코프 (Scope) 스코프(Scope)에는 범위 혹은 시야라는 의미가 있다. 이는 변수 접근 규칙에 따른 유효 범위라고 할 수 있다. 더 쉽게 설명하자면 그냥 변수가 어디에서 선언되었으냐에 따른 변수 자체의 유효 범위이다. 이 내용은 사실 9일차 TIL에 이미 한 번 나온바가 있다. 스코프 규칙 // 전역 스코프 var globalVar = "전역"; function outer() { // outer 함수 스코프 var outerVar = "..
서론 파트 1에 이은 파트 2이다. 지난 파트의 절반 정도밖에 안 되는 분량이니 빨리 진행하도록 하겠다. 이번 일자의 프로그래머스 데브코스는 자바스크립트 기초 - 객체와 빌트인 객체 그리고 매커니즘이다. 객체 지향 프로그래밍 (Object-Oriented Programming; OOP) 객체 지향 프로그래밍은 실세계에 존재하고 인지하고 있는 객체를 소프트웨어의 세계에서 표현하기 위해 객체의 핵심적인 개념 또는 기능만을 추출하는 추상화를 통해 모델링하려는 프로그래밍 패러다임을 말한다. 즉, 우리가 주변의 실세계에서 사물을 인지하는 방식을 프로그래밍에 접목하려는 사상이다. 이러한 객체 지향 프로그래밍은 클래스 기반 언어와 프로토타입 기반 언어로 나뉜다. 클래스 기반 언어 클래스 기반 언어(Java, C++,..
Jukrap
뒹굴뒹굴 공간