본문 바로가기

분류 전체보기

(107)
[JAVA] BOJ 2579 계단 오르기 계단 오르기 문제는 정답 비율이 35% 정도 되는 어려운 문제였다. 꽤나 까다롭고 예상치 못한 부분이 있어서 2일 정도 계속 고민했던 것 같다. 이전 정수 삼각형 문제와 같이 마지막 계단으로 가는데 누적합이 최대가 되는 경로를 찾아 그 최대 누적합을 출력하는 문제이다. 동적 계획법 문제들이 그렇듯 메모이제이션과 점화식을 잘 찾아내면 해결할 수 있지만 이번 포스팅에선 내가 실패했던 케이스와 이를 해결한 과정을 기록하고자 한다. 실패한 케이스 문제의 조건은 세 개이다. 계단은 한 칸 혹은 두 칸씩 오를 수 있으며 연속된 세 개의 계단은 밟지 못하고 마지막 계단은 '반드시' 밟아야 한다. 문제는 이전 정수 삼각형 문제와 비슷하기 때문에 이 역시도 그와 같은 방법으로 DP 배열에 해당 칸까지의 최댓값을 저장해가..
[JAVA] BOJ 1932 정수 삼각형 동적계획법 문제임에 따라 점화식을 구하고 메모이제이션을 어떻게 할지 먼저 구상해야 한다. 입출력에는 BufferedReader 와 System.out.println을 사용하였다. 1. 메모이제이션(Memoization) 우선 정수 삼각형을 이루고 있는 값들을 cost(비용) 이라 하면, 이 cost는 2차원 배열이 된다. 또한 최대 누적값을 저장하는 2차원 배열 DP[][] 를 만들어 i행 j열의 요소까지의 최대값을 저장하여 중복되는 계산과정을 줄일 수 있다. 예를 들어, 2 1 3 1 2 0 인 2차원 배열이 입력값으로 주어졌을 때, cost는 [2][0][0] [1][3][0] [1][2][0] 이 되고 DP배열은 로직을 다 돌고나면 다음과 같은 배열이 될 것이다. [2][-1][-1] [3][5][..
[JAVA] BOJ 1003번 피보나치 함수 단순 피보나치수열을 구하는 것은 백 트레킹으로 쉽게 구할 수 있지만 동적 계획법 문제는 메모이제이션을 추가로 구현해야 한다. 이 문제는 피보나치수열을 구하는 동적 계획법 문제와 비슷하지만 출력하는 형식이 다르다. 각 테스트케이스에 대해 N이 0이 되는 횟수와 1이 되는 횟수를 구해야 하는데 피보나치수열은 F(N) = F(N-1) + F(N-2) 의 점화식을 따르고, 피보나치수열의 초기값 두 개인 0, 1을 호출하는 횟수 또한 이 점화식을 따라 증가하는 형태를 띤다. 예제에서도 볼 수 있듯 F(2)_zero = F(1)_zero + (F0)_zero, F(2)_one = F(1)_one + F(2)_one을 만족하여 [1 1]을 출력할 것이고 F(3) 또한 이를 만족하여 [1 2]를 출력한다. *F(N)_..
[JAVA] BOJ 9461 파도반 수열 동적 계획법(DP) 문제이다 보니 조금 난이도가 있었다. 파도반 수열을 쭉 써보면 1, 1, 1, 2, 2, 3, 4, 5, 7, 9, 12, 16, 21, 28, 37.... 이렇게 이어지는 것을 알 수 있다. 동적 계획법은 수열의 패턴, 즉 점화식을 찾아내는 것이 가장 먼저이기 때문에 패턴을 분석해보니 6번째 숫자부터 f(N) = f(N-1)+ f(N-5)를 따르고 있었다. static long padovan(int N) { if (N_li[N]==0) return N_li[N] = (padovan(N-1) + padovan(N-5)); return N_li[N]; } 이런 식으로 재귀 함수를 구성해주면 되고 N_li라는 배열은 메모 이제이 션(Memoization)을 구현하기 위해 만들어준 배열이다..
[JavaFx] 채팅 프로그램 개발 및 코드 분석 개발자 동빈나님의 유튜브 강의를 보고 개발한 JavaFx 채팅 프로그램입니다. 본 포스팅의 목적은 코드 기록과 코드 분석용입니다. https://ndb796.tistory.com/57 자바 FX(Java FX)를 이용한 서버 및 클라이언트 채팅 프로그램 ④ 클라이언트 기능 모듈 작성하기 이번 시간은 자바 FX(Java FX)를 이용한 서버 및 클라이언트 채팅 프로그램 개발하기의 네 번째 시간입니다. 바로 클라이언트 기능 모듈을 개발하는 것입니다. 일단 클라이언트 프로그램이라고 ndb796.tistory.com 채팅 프로그램은 간단하게 클라이언트와 서버 두 파트로 구분됩니다. 서버는 클라이언트 서버모듈과 서버 모듈로 나뉘고 클라이언트는 클라이언트 모듈로 구성되어있습니다. 서버, 클라이언트 서버, 클라이언트..
생활코딩 - 자바 강의를 듣고 https://opentutorials.org/course/1223/5399 객체 지향 프로그래밍 - 생활코딩 객체 지향 프로그래밍 객체지향 프로그래밍(Object-Oriented Programming)은 좀 더 나은 프로그램을 만들기 위한 프로그래밍 패러다임으로 로직을 상태(state)와 행위(behave)로 이루어진 객체로 만드는 것 opentutorials.org 자바를 기본부터 다시 배워보자 하는 마음에 생활코딩 자바 강의를 두 번째 수강하였다. 평소 객체지향에 대한 기본적인 개념이 약했던 터라 객체 지향 강의부터 시작하였는데 내 식대로 이해한 개념을 기록하고자 한다. 객체지향의 핵심 키워드는 객체이다. 객체는 비슷한 기능을 하는 변수 혹은 메서드들을 그룹으로 묶어 관리하고자 할 때의 솔루션이다...
[Python] 뉴스 감성지수 분류 모델 https://sieon-dev.tistory.com/4 [Python] 포트폴리오 최적화 서비스 제공과 텍스트마이닝을 사용한 금융 데이터 분석 해외의 포트폴리오 최적화 및 백테스트 사이트인 PortfolioVisualizer의 국내화 버전으로 개발하였습니다. 개인의 포트폴리오 최적화와 백테스트 기능을 제공하고 텍스트마이닝을 사용하여 시장, 기 sieon-dev.tistory.com 위 사이트를 개발할 때 사용한 감성지수 분류 모델에 대해 기록을 남겨볼까 합니다. Preview 사실 처음에는 뉴스 데이터를 활용하여 다음날의 주가를 예측하는 모델을 만들고 싶었지만 다양한 방법들을 시도하여도 예측 정확도가 60%대 밖에 나오지 않아 차라리 감성지수를 예측하는 모델을 설계하는 방향으로 바꿨습니다. 감성지수는 ..
Django에서 ajax를 사용하여 DB정보 불러오기 Ajax(Asynchronous JavaScript and XML, 에이잭스)는 비동기적인 웹 애플리케이션의 제작을 위해 이용하는 웹 개발 기법이다. Ajax는 쉽게 말해 화면의 깜빡임 없이 서버에 데이터를 요청하고 다시 웹페이지에 뿌려줄 수 있는 방법입니다. 오늘 포스팅할 내용은 Django로 웹 개발을 할 때 Jquery로 Ajax를 구현하는 방법입니다. 1. Jquery를 사용하기 위한 작업 https://code.jquery.com/ jQuery CDN The integrity and crossorigin attributes are used for Subresource Integrity (SRI) checking. This allows browsers to ensure that resources ..