알고리즘 기초를 풀면서 수학 문제만 풀다가 나도 남들이 말하는 dp 문제라는 걸 풀게 됐다! 뿌듯해요 Dynamic Programming 은 동적 프로그래밍이다. 복잡한 문제를 작은 문제로 분해하여 해결하는 알고리즘 기법 중 하나이다. 분할 정복과 유사하며 중복되는 부분 문제가 발생할 때 한 번만 계산하고 그 결과를 메모이제이션하여 다른 비슷한 부분 문제들이 다시 발생할 때 메모이제이션한 결과를 가져와 재활용한다. 동적 프로그래밍을 적용하기 위해서는 두 가지 조건을 만족해야한다. 전체 문제의 최적해가 부분 문제의 최적해로부터 구해질 수 있어야 하는 최적 부분 구조 (Optimal Substructure) 와 부분 문제가 중복되어 여러 번 반복 계산되어야 하는 중복되는 부분 문제 (Overlapping ..
해당 문제에서는 제시된 수 보다 작은 소수들을 모두 알아야 한다. 그래서 얼마 전 소수 구하기를 풀면서 읽었던 책의 에라토스테네스의 체 알고리즘이 생각났다. 에라토스테네스의 체는 여러 개의 수가 소수인지 아닌지를 판별할 때 사용하는 대표적인 알고리즘이다. 에라토스테네스의 체는 N 보다 작거나 같은 모든 소수를 찾을 때 사용할 수 있다. 에라토스테네스의 체 알고리즘은 다음과 같다. 1. 2 부터 N 까지의 모든 자연수를 나열한다.2. 남은 수 중에서 아직 처리하지 않은 가장 작은 수 i 를 찾는다.3. 남은 수 중에서 i 의 배수를 모두 제거한다. (i 는 제거하지 않는다)4. 더 이상 반복할 수 없을 때까지 2 번과 3 번 과정을 반복한다. 나는 에라토스테네스의 체를... 어떻게 구현해야 할지 정말 모르..
# 1 INTRODUCTION타입 안정성 때문이다. -> 코드의 버그, 런타임 에러 등이 줄어들고 생산성이 늘어남자바스크립트는 매우 유연한 언어이다. 개발자가 정신 나가도 개발자를 이해하고 도와주려 함... 현명한 청년런타임 에러는 유저가 컴퓨터에서 코드를 실행했을 때 나타남 그럼 안 되,,, 실행 전에 언어가 객체 등을 분석하고 에러를 보내줘야함 최악의 에러임...# 2 OVERVIEW OF TYPESCRIPT타입스크립트는 strongly typed(강타입) 언어이다. 작성한 ts 코드는 js 로 변환된다. 브라우저가 타입스크립트가 아니라 자바스크립트를 이해하기 때문이다. 하지만 작성한 ts 에 에러가 발생할 것 같으면 js 로 컴파일되지 않는다. let b = false 도 가능! b 는 boole..
이미지 업로드가 가능한 게시판을 구현하기 위한 로직을 정리한다.자바 문법에 대한 이해도가 낮기 때문에 먼저 로직을 정리해보고, 그 다음 코드로 구현해 보기로 했다.🐥 무엇을 사용하는가?spring bootJPAgradleDB 는 어떻게 해야할까?h2 사용초기 개발 단계에서는 구현체로 가벼운 메모리 기반의 데이터 저장소를 사용. 나중에 정확한 데이터베이스 기술이 정해지고 나면 바꿔 끼울 것임 (인터페이스 필요)🥚 요구사항 정리하기🐥 일반적인 웹 애플리케이션 계층 구조컨트롤러 : 웹 MVC 의 컨트롤러 역할서비스 : 핵심 비즈니스 로직 구현리포지토리 : 데이터베이스에 접근, 도메인 객체를 DB 에 저장하고 관리도메인 : 비즈니스 도메인 객체 (주로 데이터베이스에 저장하고 관리됨)🐥 데이터게시글의 제목..