전체 글 95

NestJS - DB 설정

이번 프로젝트에서는 PostgreSQL을 사용해보기로 했다. 윈도우 버전 다운로드 링크https://www.postgresql.org/download/windows/ PostgreSQL: Windows installersWindows installers Interactive installer by EDB Download the installer certified by EDB for all supported Postgres versions. Note! This installer is hosted by EDB and not on the PostgreSQL community servers. If you have issues with the website it's hostedwww.postgresql.org 2..

개인 공부 2025.03.24

NestJS - Pipe 기본

Pipe가 뭐지?@Injectable 데코레이터가 달린 클래스Nestjs에서 클라이언트에게서 받은 요청에 대해 변환이나 검증 과정을 거치는 곳이다.변환: 입력받은 정보를 원하는 형태로 변환 (ex: int를 string으로)검증: 입력받은 정보가 유효한지 확인, 통과시키거나 예외를 발생pipe는 컨트롤러 핸들러로 입력되는 인수를 받아 지정된 변환이나 검증 동작을 실행한다.즉, 컨트롤러의 메서드가 호출되기 전에 입력된 정보가 정확한지 확인하는 과정을 추가하는 것Nest에서 제공하는 기본적인 pipe가 있으며 원하는 커스텀 파이프를 제작하는 것도 가능하다. Spring Boot를 먼저 배워서 그런지 @Valid, @Validated 어노테이션과 비슷한 것 같다Binding PipesBuilt-in Pipes..

개인 공부 2025.03.10

NestJS - 게시판 제작 (1)

모듈NestJS에서 응집도를 높이기 위해 각각 기준을 통해 나눈 코드 덩어리들.클래스에 @Module 데코레이터를 달아 모듈로 만들고 메타데이터를 제공할 수 있다.Nest 프로젝트를 생성하면 최초에 1개의 루트 모듈이 있다.이 루트 모듈을 시작점으로 전체 앱의 구조를 그려나가는 것게시판을 예를 들자면 사용자 모듈, 게시글 모듈, 댓글 모듈이 존재하고 세부 기능 모듈들을 통해 기능을 구현하다.@Module은 아래 4개의 속성을 가지는 1개의 객체를 필요로 한다.imports 현재 모듈에서 필요로하는 모듈의 집합exports현재 모듈에서 제공하는 프로바이더들의 집합, 다른 모듈에서도 사용할 수 있도록 노출할 프로바이더controllers현재 모듈에서 정의되었고 인스턴화 되어하야 하는 컨트롤러 셋provide..

개인 공부 2025.02.25

NestJS 공부 시작 - 기본 설치 및 실행 확인

NestJS?Node.js 서버 앱을 구현하기 위한 프레임 워크Node.js를 기반으로 Express 위에 구축되었기 때문에 Express를 기본적으로 사용이 가능하며 선택적으로 Fastify를 사용할 수 있다.기본적으로 정형화된 모듈 구조를 'Decorator'를 통해 제공하며 TypeScript를 제공하기 때문에 Express 보다 유연성은 떨어지지만 서비스 확장과 유지보수에 유리하다는 점이 있다고 한다.이외에도 서버 동작에 필수적인 기능을 기본적으로 포함하고 있기 때문에 빠르게 프로젝트를 시작할 수 있다.취준을 하면서 Java 외의 언어에 대해서 견문을 넓혀보고 싶었다.NestJS는 Spring의 Annotation과 비슷한 Decorator를 사용하며 대략적인 구조가 비슷해 흥미가 갔다.설치Nod..

개인 공부 2025.02.24

[백준] 1189 컴백홈 - Java

문제한수는 캠프를 마치고 집에 돌아가려 한다. 한수는 현재 왼쪽 아래점에 있고 집은 오른쪽 위에 있다. 그리고 한수는 집에 돌아가는 방법이 다양하다. 단, 한수는 똑똑하여 한번 지나친 곳을 다시 방문하지는 않는다.      cdef  ...f  ..ef  ..gh  cdeh  cdej  ...f       bT..  .T.e  .Td.  .Tfe  bTfg  bTfi  .Tde       a...  abcd  abc.  abcd  a...  a.gh  abc. 거리 :  6     6     6     8     8    10    6위 예제는 한수가 집에 돌아갈 수 있는 모든 경우를 나타낸 것이다. T로 표시된 부분은 가지 못하는 부분이다. 문제는 R x C 맵에 못가는 부분이 주어지고 거리 K가 주어..

알고리즘 풀이 2024.12.17

[백준] 1263 시간관리 - Java

문제진영이는 캠프 조교를 온 후 효율적으로 시간 관리를 해야 한다는 것을 깨달았다. 진영이는 하루에 해야 할 일이 총 N개가 있고 이 일들을 편하게 1번부터 N번까지 차례대로 번호를 붙였다.진영이는 시간을 효율적으로 관리하기 위해, 할 일들에 대해 끝내야할 시간과 걸리는 시간을 적은 명단을 만들었다. 즉, 이 명단은 i번째 일은 일을 처리하는데 정확히 Ti 시간이 걸리고 Si 시 내에 이 일을 처리하여야 한다는 것을 담고 있다. 진영이는 0시부터 활동을 시작할 수 있고, 두 개 이상의 일을 같은 시간에 처리할 수 없다.진영이가 바라는 점은 최대한 늦잠을 자는 것이다. 문제는 이러한 진영이를 도와 일들은 모두 마감시간 내에 처리할 수 있는 범위 내에서 최대한 늦게 일을 시작할 수 있는 시간이 몇 시인지 알..

카테고리 없음 2024.12.08

[백준] 1245 농장관리 - Java

문제농부 민식이가 관리하는 농장은 N×M 격자로 이루어져 있다. 민식이는 농장을 관리하기 위해 산봉우리마다 경비원를 배치하려 한다. 이를 위해 농장에 산봉우리가 총 몇 개 있는지를 세는 것이 문제다.산봉우리의 정의는 다음과 같다. 산봉우리는 같은 높이를 가지는 하나의 격자 혹은 인접한 격자들의 집합으로 이루어져 있다. 여기서 "인접하다"의 정의는 X좌표 차이와 Y좌표 차이가 모두 1 이하인 경우이다. 또한 산봉우리와 인접한 격자는 모두 산봉우리의 높이보다 작아야한다.문제는 격자 내에 산봉우리의 개수가 총 몇 개인지 구하는 것이다. 입력 첫째 줄에 정수 N(1 출력 첫째 줄에 산봉우리의 개수를 출력한다.지도, 주변 탐색, 아 이건 BFS로 풀어야 겠구나라고 생각했다.먼저 2개의 boolean 배열이 필요..

알고리즘 풀이 2024.12.02

[백준] 1174 줄어드는 수 - Java

문제음이 아닌 정수를 십진법으로 표기했을 때, 왼쪽에서부터 자리수가 감소할 때, 그 수를 줄어드는 수라고 한다. 예를 들어, 321와 950은 줄어드는 수이고, 322와 958은 아니다.N번째로 작은 줄어드는 수를 출력하는 프로그램을 작성하시오. 만약 그러한 수가 없을 때는 -1을 출력한다. 가장 작은 줄어드는 수가 1번째 작은 줄어드는 수이다.입력N이 주어진다. N은 1,000,000보다 작거나 같은 자연수이다.출력첫째 줄에 N번째 작은 줄어드는 수를 출력한다.DFS를 사용하여 문제를 풀었다.먼저 감소하는 수 중에 만들 수 있는 가장 큰 수를 구하고 각 자리수의 값을 배열에 저장하자.9876543210다음 자리수와 같아도 된다는 조건이 없기 때문에 만들 수 있는 가장 큰 줄어드는 수는 위와 같다. in..

알고리즘 풀이 2024.11.26

[백준] 1092 배 - Java

문제지민이는 항구에서 일한다. 그리고 화물을 배에 실어야 한다. 모든 화물은 박스에 안에 넣어져 있다. 항구에는 크레인이 N대 있고, 1분에 박스를 하나씩 배에 실을 수 있다. 모든 크레인은 동시에 움직인다.각 크레인은 무게 제한이 있다. 이 무게 제한보다 무거운 박스는 크레인으로 움직일 수 없다. 모든 박스를 배로 옮기는데 드는 시간의 최솟값을 구하는 프로그램을 작성하시오.입력첫째 줄에 N이 주어진다. N은 50보다 작거나 같은 자연수이다. 둘째 줄에는 각 크레인의 무게 제한이 주어진다. 이 값은 1,000,000보다 작거나 같다. 셋째 줄에는 박스의 수 M이 주어진다. M은 10,000보다 작거나 같은 자연수이다. 넷째 줄에는 각 박스의 무게가 주어진다. 이 값도 1,000,000보다 작거나 같은 자..

알고리즘 풀이 2024.11.23

[백준] 1117 색칠 1 - Java

문제지민이는 종이에 색칠하기를 좋아한다. 지민이는 W×H 크기의 직사각형 종이를 가지고 있다. 지민이는 종이에 다음과 같이 색칠 하려고 한다.종이를 x = f에 맞춰서 접는다. 이때, 왼쪽 종이가 오른쪽 종이 위에 올라오게 접는다.종이를 가로로 c+1개의 크기가 동일 한 구간으로 나눈다. 그 다음에 c번 가장 위의 구간부터 차례대로 접는다.왼쪽 아래가 (x1, y1) 이고, 오른쪽 위가 (x2, y2)인 직사각형을 찾는다. 이때, (0, 0)은 현재 접힌 상태에서 가장 왼쪽 아래 점이다. 그 직사각형을 칠한다. 이때, 페인트는 겹쳐있는 모든 곳에 스며든다.종이를 편다.(예시 사진은 백준 사이트에서 확인)https://www.acmicpc.net/problem/1117 W, H, f, c, x1, y1, ..

알고리즘 풀이 2024.11.21