개념 동적 프로그래밍(DP)은 복잡한 문제를 단순한 하위 문제로 나누어 푸는 방법으로 같은 입력값에 대한 반복되는 호출을 하는 솔루션을 만났을 때 사용합니다. 주어진 문제를 부분 문제로 나누어 각 부분 문제의 답을 계산 후 결과값을 이용하면 원래 문제의 답을 효율적으로 구할 수 있습니다. 💡 다이나믹 프로그래밍은 하나의 문제를 단 한 번만 풀도록 하는 알고리즘으로 구체적인 알고리즘이라긴 보단, 문제 해결 패러다임에 가깝습니다. [ 🤔 탐욕 알고리즘과 다른점 ] 둘 다 최적의 값을 찾는다는 점에서 비슷하지만, 다른 방법으로 찾습니다. 탐욕 알고리즘 전체의 값을 찾기 위해 지역적으로 탐욕적인 선택을 찾음 → 비용이 많이 들며, 전역적으로는 최적의 알고리즘을 보장하지 않을 수 있음 동적 프로그래밍 전체의 값을..
전체 소스코드는 여기서 확인하실 수 있습니다 🎵 사전정보 - 어노테이션과 RESTful API [ Spring Annotation ] Spring 어노테이션은 프로그램에 대한 추가 정보를 제공하는데 사용합니다. 프로그램에 직접적인 영향은 미치지 않고 프로그램에 대한 데이터를 제공하는 메타데이터의 한 형태입니다. 😎 사람들이 코드를 볼 때 주석을 보고 해석을 하듯, 프로그램을 컴파일, 실행 할 때 어노테이션을 보고 참고해 코드를 해석한다고 생각하시면 됩니다. Spring Framework는 아래와 같이 다양한 어노테이션을 제공하고 있습니다. @Required @Autowired @Bean @Component @Controller @Service @Repository etc ... [ Spring REST ..
개념 플로이드-워셜 알고리즘은 가중치 그래프에서 모든 최단 경로를 구하는 알고리즘입니다. 한 번 실행하여 모든 노드 간 최단 경로를 구하는데 이때, 최단 경로를 찾기 위해 DP(동적 프로그래밍) 방식을 사용합니다. [ 🤔 다익스트라와의 차이점? ] 다익스트라 : 하나의 정점에서 다른 모든 정점까지의 최단 거리 시작점으로 부터 나머지 정점까지 최단거리 구할 때 사용 음의 가중치 간선이 있으면 사용하지 못 함 프로이드-워셜 : 한 번 실행해 모든 노드 간 최단 경로 각 정점간 최단 경로 구할 때 사용 음의 가중치 간선에서 사용 가능 ✔ 시작점으로부터 각 정점까지 최단 거리만 구할 때 → 다익스트라 ✔ 간결한 소스코드, 간선 수가 많을 떄 → 플로이드-워셜 [ 알고리즘 응용 ] 최단 경로 찾는 방향 그래프 실..
1편(개념편)에서 이어지는 내용입니다.😎 위 사진처럼 회원가입, 로그인 등 폼을 활용해 사용자에게 입력 필드를 제공할 때 입력과 동시에 유효성 검사를 진행하면 사용자 친화적으로 접근할 수 있어 많은 사이트들이 해당 유효성 검사 방식을 사용합니다. react-hook-form을 사용해 입력과 동시에 유효성 검증을 구현해보겠습니다. 1. react-hook-form의 기본 설정값 1편에서 설명했듯이 react-hook-form은 submit 함수가 호출 될 때, 즉 사용자가 어떤 행위를 해야 유효성 검증을 진행합니다. 이 부분을 해결하기 위해 입력 필드에 validate 옵션을 통해 함수로 유효성 검사하는 부분을 분리하겠습니다. 2. 구현 [a.기능 설명] 일단 입력 필드의 상태를 세 가지의 타입으로 나눴습..
1. React Hook Form 소개 공식문서 링크 : https://react-hook-form.com/ React Hook Form은 React 내에서 From을 쉽게 제어하고 손쉽게 유효성 검사를 처리하도록 도와주는 라이브러리입니다.다른 종속성이 없는 최소한의 라이브러리로 구성되어 있어 성능이 뛰어나고 사용이 간편합니다. [React 기본 입력 필드 처리] import React, { useState } from "react"; export default function App() { const [state, setState] = useState({ email: "", password: "" }); const handleInputChange = (event) => { setState((prevPr..
1.ecstats 오픈소스 redis를 사용하다 모니터링이나 관리 툴을 사용하지 않고 간단하게 데이터량을 추출해보고 싶어서 ecstats 오픈소스를 사용해보게 되었습니다. ecstats 오픈소스는 ElastiCache, Azure Cache for Redis, Redis cluster를 python 스크립트를 사용해 데이터 사용량과 구성 정보를 엑셀로 추출해주는 오픈소스입니다. - 링크 : https://github.com/Redislabs-Solution-Architects/ecstats [오픈소스 구조] ecstats는 총 세 가지 유형의 캐시 저장소의 데이터량의 추출하는 스크립트를 제공합니다. ElastiCache pullElasticCacheStats.py Azure Cache for Redis ..
1. 스프링 프레임워크 이전 스프링 프레임워크는 2005년 로드 존슨이 2004년에 만든 오픈소스 프레임워크입니다. 이러한 스프링 프레임워크가 등장하기 이전, 자바 기반의 애플리케이션은 대부분 EJB로 개발되었습니다. [EJB] EJB는 Enterprise JavaBeans의 약자로 기업환경의 시스템을 구현하기 위한 서버 측 컴포넌트입니다. 즉, 거대 규모 시스템 구축을 위한 컴포넌트 모델입니다. [EJB의 구조] Enterprise Bean - 비즈니스 로직을 실행하는 서버 컴포넌트 - CRUD를 관리하고 클라이언트와 DB 사이에 접근하는 역할 Container - 서버 내에서 Enterprise Bean에 대한 런타임 환경 제공 - EJB Server와 Enterprise Bean 사이에 통신 역할 ..
1. Amazon S3란? Amazon S3는 Amazon Simple Storage Service의 약자로 언제 어디서나 데이터를 단순하게 처리할 수 있도록하는 웹 서비스 기반 인터페이스를 제공합니다. 웹에서 사용 가능한 오브젝트 저장소로 사용한 만큼만 비용을 지불하고 내구성과 확장성이 뛰어납니다. 2. S3 특징 API를 통한 직접 사용이 가능 병렬 처리 지원 수명 주기, 객체 잠금, 복제, 배치 작업등 스토리지 관리를 위한 기능 지원 Labmda, SQS, SNS 등 데이터를 변환하고 워크플로를 트리거해 다양한 활동 자동화 처리 가능 객체에 대한 강한 일관성 제공 S3버킷과 객체는 기본적으로 비공개로 액세스하기 때문에 권한을 감사 및 관리하기 위한 기능 제공 3. S3 저장 방식 S3는 데이터를 버..