본문 바로가기

분류 전체보기

(110)
하이트진로 기업분석 Information 기업명 : 하이트진로 000080 사업 : 음식료품 CEO : 김인규 CEO 이력 : 1962년 11월 16일 서울에서 태어나 배재고등학교와 연세대 수학과, 연세대 경영대학원을 졸업했다. 1989년 하이트맥주에 입사한 뒤 한 회사에서만 30년여 동안 인사와 마케팅, 경영기획, 영업 업무를 두루 맡은 ‘하이트 맨’이다.하이트맥주 영업본부 본부장과 하이트맥주 부사장을 거쳐 하이트진로 대표이사 사장에 선임됐으며 하이트진로홀딩스 대표이사 사장도 겸직하고 있다. 신제품 ‘진로’를 내놓아 소주시장 점유율 1위 자리를 단단히 다진 데 이어 맥주시장에서 아성을 되찾기 위해 ‘테라’에 사활을 걸고 있다. 김인규는 사업 추진력이나 정무적 감각도 뛰어나다는 평가를 받는다. 영업과 생산 현장에서 직원들과..
[JAVA] BOJ 11053 가장 긴 증가하는 수열 동적 계획법 문제답게 메모이제이션과 점화식을 생각해봐야 한다. A= {10, 20,10, 30, 20, 50} 라면 F(N) 은 N번째 요소가 이전 요소 중 몇 번째로 증가하는 수열인지 저장한다. 즉, 3번째 요소인 10은 이전 값 {10, 20} 중 1번째로 증가하는 수열이기 때문에 1이 F(3) = 1이 된다. 이처럼 A의 모든 요소를 반복문으로 돌면서 F(N) 값을 저장한 뒤 출력할 때는 F(N) 중 가장 큰 값을 출력하면 된다. 코드로 보면 import java.io.*; import java.util.*; public class Main { public static Integer[] DP; static ArrayList cost = new ArrayList(); public static void..
[JAVA] BOJ 1463 1로 만들기 생각보다 간단하게 풀 수 있는 문제였는데 정답 비율이 낮아서 놀랐다. 동적 계획법 문제이다 보니 이 역시도 메모이제이션과 점화식만 찾아내면 문제를 풀 수 있다. 이 문제는 연산을 사용하는 횟수의 최솟값을 출력하는 문제이다 보니 메모이제이션 해야 하는 값은 주어진 N을 1로 만드는데 까지 드는 연산 횟수의 최솟값이다. N이 2로 나누어지는지 3으로 나누어지는지에 따라 다른 케이스로 나뉘며, 각 케이스마다 N을 1로 빼는 케이스가 더해져 최솟값을 비교해야 한다. 예제를 보면, 10을 입력했을 때 10은 2로 나눠지기 때문에 F(10) = Math.min(F(10/2),F(10-1)) + 1으로 구할 수 있다. 한번 다음 단계로 갈 때마다 횟수를 추가해줘야 하기 때문에 +1을 한 것이다. 위의 식은 다시 F(..
[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 채팅 프로그램은 간단하게 클라이언트와 서버 두 파트로 구분됩니다. 서버는 클라이언트 서버모듈과 서버 모듈로 나뉘고 클라이언트는 클라이언트 모듈로 구성되어있습니다. 서버, 클라이언트 서버, 클라이언트..

반응형