목록분류 전체보기 (305)
https://school.programmers.co.kr/learn/courses/30/lessons/68645 이 문제는 2차원의 배열에 반시계 방향으로 숫자를 채운 뒤, 배열 순서대로 숫자를 반환하는 문제다. 처음 문제를 보았을 때는 풀지 못했던 문제인데, 백준에서 다양한 알고리즘 풀이 방식에 대해 공부하게 되면서 풀 수 있게 되었다. 생각한 로직은 다음과 같다. 먼저 다음과 같은 2차원 배열을 생성한다. 이때, 해당 배열은 삼각형 형태를 띄어야하므로, 인덱스에 따라 커지게 만들었다. 이후 하, 우, 좌상으로 이동하며 빈칸을 채우는 로직을 구현한다. 이때 해당 칸이 채워져 있을 경우나, 범위를 벗어나는 경우 이를 처리할 수 있는 함수도 함께 구현한다. (BFS나 DFS에서 사용하는 방식을 응용하였다..
해당 문제 풀이는 구글에 자바스크립트 풀이 방법이 존재하지 않길래 포스팅하게 되었다. https://www.acmicpc.net/problem/14940 풀이 방식은 다음과 같다. 1. 먼저 "2"로 표현된 목표 지점을 찾는다. 그리고 이를 찾는 과정에서 "원래갈 수 있는 땅인 부분 중 도달할 수 없는 위치"는 "-1"로 표현되어야 하므로, 전체적인 배열 matrix에서 "1"로 표현되어 있는 값을 미리 모두 -1로 수정한다. (findStarting 함수) 2. BFS 함수를 구현한다. 로직은 [이동거리, 위치] 를 요소로 갖는 queue를 사용하여 구현했고, visited 배열을 통해 이미 방문한 곳은 다시 방문하지 않도록 했다. 이때, 상하좌우로 이동하였을 때 이동이 가능한지를 확인하여("0"이 아..
https://www.acmicpc.net/problem/12865 문제는 최대로 담을 수 있는 무게와 담으려는 물품이 주어질 때, 배낭에 넣을 수 있는 물건들의 가치합의 최대값 요하는 문제다. // limit = 5 // data = [ [ '6', '13' ], [ '4', '8' ], [ '3', '6' ], [ '5', '12' ] ] const fs = require('fs') const input = fs.readFileSync(process.platform === "linux" ? "/dev/stdin":"입력.txt") .toString().trim().split("\n").map((x)=> x.split(" ")) const [_, limit] = input.shift().map(el=>..
이번 포스팅에서는 docker를 활용하여 컨테이너를 올리고, 서버와 연동시키는 과정에 대해 다룬다. (postgres 마스코트인 코끼리가 귀여워서 언젠가 한번 써보고 싶었음) ORM은 TypeORM을 사용했으며, express 서버를 구현하였다. 먼저 간단한 MySQL과 PostgreSQL을 비교해본다. PostgreSQL MySQL 특징 기능과 표준에 중점 속도에 중점 (단순 CRUD의 경우 빠른 속도) 사용 영역 크고 복잡한 작업에 사용 일반적으로 간단한 작업에 사용 목차 typeorm과 postgres 연결 코드 작성 postgres 실행 코드 작성 docker-compose.yaml 파일 작성 postgres 초기 설정 1. typeORM과 postgres 연결 import { DataSourc..
자바스크립트 내에서 상속 패턴과 전략 패턴은 모두 객체 지향 프로그래밍(OOP)를 지원하는 패턴이다. 둘다 코드의 재사용성을 높이며, 유지보수성을 향상시킨다는 장점이 있다. 두 패턴의 차이점에 대해 간단히 얘기하면, 상속 패턴의 경우, 부모 클래스로부터 다른 클래스가 상속받아 부모 클래스의 메서드나 프로퍼티를 정적으로 재사용하는 패턴이며, 전략 패턴의 경우, 동일한 문제를 해결하기 위해 다양한 알고리즘을 가진 객체들을 정의하고 이를 동적으로 교환하여 사용하는 패턴이다. 상속 패턴 (extends) 상속 패턴의 경우, 부모 클래스(기존 클래스)를 상속해 새로운 클래스를 생성하면 상속받은 부모 클래스의 속성과 메서드를 사용할 수 있다고 위에서 언급했다. 이때, 자식 클래스에서 부모 클래스의 메소드를 재정의 ..
class class란 ES6(2015)부터 추가된 기능 중 하나로 이를 통해 객체를 생성하는 것이 가능하다. 일반적으로 class는 생성자 함수(constructor), 프로퍼티, 메소드 등으로 이루어져 있고, contructor 함수는 객체가 생성될 때 실행되며 객체의 프로퍼티를 초기화하는 역할을 하며, new 연산자를 사용하여 해당 class 객체를 생성할 수 있다. 어떤 면에서 class는 '어떤 것'을 만들기 위한 레시피와 같은데, 갑자기 이삭토스트가 먹고 싶으니 토스트를 기준으로 설명한다. class Toast { constructor(bread, egg) { // 생성자 함수 this.bread = bread // 프로퍼티 this.egg = egg // 프로퍼티 } cook() { // 메..
next.js 환경 / react 환경에서의 환경 변수를 적용하는 방식은 대동소이한데, 같은 점은 앞에 각 환경에 따라 약속된 접두사를 붙여야 한다는 점이며, 다른 점은 next.js 의 경우 NEXT_PUBLIC_ 을 접두사로, react의 경우 REACT_APP_을 접두사로 사용해야 한다는 점이다. 사용 방법 예시는 아래와 같다. // .env // next.js 환경 NEXT_PUBLIC_example=example // react 환경 REACT_APP_example=example 해당 접두사를 정상적으로 입력하지 않았을 경우, undefined로 나타나게 된다. (node.js나 nest.js의 경우에는 위와 같은 규칙이 없었어서, 처음 next.js 환경에서 환경변수를 사용할 때 적용이 되지 ..
URL : https://asst.world 3주 전부터 프론트엔드 공부를 진행했다. 이유로는 두 가지가 있는데, 첫 번째는 취업 후 프론트엔드에 대한 이해가 있다면 협업에 도움이 되지 않을까 하는 생각과, 두 번째로는 혼자 온전한 웹 페이지를 만들고 싶다는 이유 때문이었다. 1. 기획 의도 이후 인프런을 통해 프론트엔드 강의를 들으면서도, 혼자 산책하며 만들어 볼 웹 페이지에 대해 구상했다. 이윽고 결정내린 페이지 주제는, 간단한 테스트와 한국사, 문학에 대한 개인적인 관심을 융합하여 "나와 성향이 비슷한 조선시대 예술가 찾기"로 기획했다. 개인적인 의견으로 인스타그램에 종종 올라오는 "~~테스트 결과"와 같은 게시물의 등장 빈도가 잦다 보니, 이를 활용하여 웹 페이지에 광고를 달아 수익을 얻는 방법도..