본문 바로가기

전체 글60

API 명세서 자동화 - swagger (feat. express.js) Swagger의 주요 특징자동화된 API 명세서 생성코드 주석을 통해 API 명세서를자동으로 생성할 수 있다사용자 친화적인 UI누구나 API 명세서를시각적으로 이해할 수 있다API 테스트 기능직접 API를 호출하고테스트할 수 있는 기능을 제공 swagger 관련 패키지 설치npm install swagger-jsdoc swagger-ui-express  swagger 설정 파일 생성const swaggerJsDoc = require('swagger-jsdoc');const swaggerUi = require('swagger-ui-express');const swaggerOptions = { swaggerDefinition: { openapi: '3.0.0', info: { title.. 2024. 10. 10.
[자료구조][스택] - 연결 리스트 스택 연결 리스트 스택 구조스택의 최상단은 연결 리스트의 첫 번째 노드삽입 / 삭제 연산은 스택의 최상단에서 이루어짐연결 리스트 스택 장점배열과 다르게 동적이므로효율적인 메모리 사용 가능연결 리스트 스택 단점데이터 이외에 다음 노드를 위한포인터를 위한 메모리가 추가 필요하므로작은 데이터셋에서는 오버헤드 발생 우려연결 리스트 스택 구현 (Java)class Node { int data; Node next; public Node(int data) { this.data = data; this.next = null; }}class LinkedListStack { private Node top; public LinkedListStack(.. 2024. 3. 21.
[자료구조][스택] - 재귀 스택 재귀 함수란?자신을 다시 호출하는 함수재귀 함수 예시 int factorial(int n) { if (n == 1) { // 종료 조건 return 1; } return n * factorial(n - 1); // 재귀 호출 } System.out.println(factorial(5)); // 5 * 4 * 3 * 2 * 1 = 120 재귀 함수는 매번 자기 자신을 호출할 때마다현재 함수의 상태가 스택에 저장됨 하지만 재귀 호출이 너무 깊어지면Stack Overflow 가 발생할 수도 있음  해당 문제를 해결하기 위해재귀를 명시적 스택을 사용하여반복문으로 대체할 수 있다명시적 재귀 스택 예시 int factor.. 2024. 3. 17.
API 응답 구조화 (feat... 유틸 클래스) API 서버를 개발할 때클라이언트와 원활한 소통을 위해일관된 응답 구조 방식을 채택할 수 있다 API 엔드포인트에서성공 여부와 에러를 전달할 때일정한 포멧으로 응답을 주고 받으면클라이언트에서 예측 가능한 처리가 가능하다 유틸 클래스의 필요성API의 갯수가 많아질수록 동일한 형태의성공 / 실패 응답을 자주 사용하게 될 가능성이 높다이는 자연스래 중복된 코드로 이어지고유지보수 또한 까다로워진다 동일한 엔드포인트에서성공 / 실패 여부에 따른 응답을위와 같이 설정할 수 있다성공 시 응답 데이터{ "result": true, "errNum": null, "data": { "message": "Registration Success" }} 실패 시 응답 데이터{ "result": false, "err.. 2024. 3. 8.
[자료구조][스택] - 모노톤(단조) 스택 모노톤 스택이란?스택에 데이터를 삽입할 때데이터가 단조 증가 / 감소하는 스택  모노톤 스택 예시 (Java) public int[] nextGreaterElement(int[] nums) { int[] result = new int[nums.length]; // 결과 저장 배열 Stack stack = new Stack(); // 스택 선언 for (int i = nums.length - 1; i >= 0; i--) { // 역순으로 순회 while (!stack.isEmpty() && stack.peek() 2024. 2. 22.
[자료구조][스택] - 스택 스택이란?마지막에 삽입된 데이터가 가장 먼저 제거되는LIFO(Last In, First Out) 원칙을 따르는 자료구조 스택의 사용 방법 스택의 장점 스택의 단점 스택의 예시 (java) Stack stack = new Stack(); // 스택 생성 // Push: 스택에 요소 추가 stack.push(10); // 스택: [10] stack.push(20); // 스택: [10, 20] stack.push(30); // 스택: [10, 20, 30] // Peek: 스택의 맨 위 요소 확인 (제거하지 않음) System.out.println("Top element: " + stack.peek()); // 30 .. 2024. 2. 20.
[알고리즘][정렬] - 쉘 정렬 쉘 정렬이란? 배열을 부분적으로 정렬된 여러 개의 서브 배열로 나누고 각 서브 배열에 대해 삽입 정렬을 수행함으로써 전체 배열을 점진적으로 정렬하여 삽입 정렬을 개선한 정렬 알고리즘 (삽입 정렬에 대한 설명 보러 가기) 작동 원리 1. 배열의 전체 길이에 따라 초기 간격(gap)을 설정한다 (보통 전체 길이의 절반이며, 홀수 권장) 2. 설정된 간격만큼 떨어진 요소들을 담은 부분 리스트를 생성한다 (부분 리스트의 개수는 간격과 같다) 3. 부분 리스트의 요소들을 비교하여 각각 삽입 정렬한다 4. 정렬 후, 간격을 절반으로 축소한다 (축소할 때마다 하나의 부분 리스트에 속한 값들은 증가) 5. 간격이 1 에 도달하면 전체 리스트를 삽입 정렬한다 작동 예시 쉘 정렬 메소드 예시 public void shel.. 2024. 2. 16.
[프로그래머스] 알고리즘 고득점 kit - 올바른 괄호 (Stack/Queue) 문제링크: https://school.programmers.co.kr/learn/courses/30/lessons/12909 • "(" 로 열렸으면 반드시 짝지어서 ")" 로 닫혀야 올바른 괄호 • 여기서 "( ) ( ( )" 와 "( ) ( ) ) ) ( )" 는 올바르지 않은 괄호 • 들어온 문자가 "(" 일 경우 저장소에 넣었다가 • 들어온 문자가 ")" 일 경우 저장소에 있는 "(" 와 짝짓기 • 이때 가장 마지막 즉, 최신의 "(" 와 비교하므로 후입선출의 구조 • 후입선출을 최대한 활용할 수 있는 Stack 생성 • 저장소에 "(" 가 존재하지 않을 경우에 ")" 가 들어올 경우에 대한 에러처리 • startsWith, endsWith 를 활용하여 1차 관문을 생성할 수 있지만 •.. 2024. 2. 7.
728x90
반응형