전체 글
[분재일기]적송 씨앗 뿌리기 - 21.12.29(수)
적송 씨앗 뿌리기 우연찮게 소나무 분재를 보았고 한번 키워보고 싶다는 생각을 하였다. 그렇게 소나무 분재를 찾다보니 키우는데 많은 애정과 관심이 필요한것을 알았다. 추가로 가격도 조금 부담스러운 면도 있었다. 그렇게 씨앗을 구매하여 몇개는 바로 젖은 키친타올에 몇개는 바로 흙에 직접 뿌렸다. 그리고 몇개는 물에 2~3일간 담근후 옮겨 심으면 좋다고 하여 물에 담가 두었다. 물론 성공할지 실패할지 모르겠지만 어느정도 성공하길 희망한다.
[커피일기]콜드브루 혹은 더치커피?
콜드브루 혹은 더치커피 일반적으로 카페에서 흔히 여름철에 콜드브루 혹은 더치커피를 마주하게 되는데 간혹 콜드브루랑 더치커피의 맛과 향이 비슷한테 다른건가? 같은건가하는 의문이 들곤했었다. 그렇다면 실제로 이 둘은 같은 커피인지 궁금했고 그결과를 정리해보았다. 아메리카노와의 차이!!!! 우선 해당 커피들을 아메리카노와 비교해 보자면 아메리카노는 에스프레소 머신을 통해 뜨거운 열로 추출한 커피(에스프레소)를 뜨거운 물 혹은 차가운 물(일반적으로 아이스 아메리카노는 한국에서 유행했다.)에 섞으면 완성이 된다. 하지만, 콜드브루(더치커피)는 '차갑다(cold)', '우려내다(brew)'의 합성어로 찬물 혹은 상온의 물에 우려낸 즉, 천천히 추출한 커피가 된다. 콜드브루와 더치커피는? 위에서 말한것과 같이 카페에..
BaekJoon(2023)::신기한 소수
문제 2023번: 신기한 소수 수빈이가 세상에서 가장 좋아하는 것은 소수이고, 취미는 소수를 가지고 노는 것이다. 요즘 수빈이가 가장 관심있어 하는 소수는 7331이다. 7331은 소수인데, 신기하게도 733도 소수이고, 73도 소수 www.acmicpc.net 문제파악 해당 문제는 N자리의 수가 주어질 경우 해당 수의 왼쪽부터 1자리,2자리 3자리가 전부 소수인 소수를 구하는 문제가 된다. 즉, 해당 문제를 푸는데 있어서 내가 든 생각은 다음 조건들이 있다는 생각이 들었다. 각 자리의 수 : 0~9 소수 판별 N자리 수만큼 반복 이러한 조건들을 생각해보고 문제를 해결해 보았다. 문제풀이 #include using namespace std; bool isPrime(int num) { if (num < 2..
BaekJoon(5582)::공통 부분 문자열
문제 5582번: 공통 부분 문자열 두 문자열이 주어졌을 때, 두 문자열에 모두 포함된 가장 긴 공통 부분 문자열을 찾는 프로그램을 작성하시오. 어떤 문자열 s의 부분 문자열 t란, s에 t가 연속으로 나타나는 것을 말한다. 예를 들 www.acmicpc.net 문제파악 해당문제는 LCS와 비슷하게 풀 수 있는 문제이다. 다만, 기존 LCS는 Longest-Common-Subsequence라면 해당 문제는 Longest-Common-SubString 문제이다. 위 두 LCS또한 결국 DP문제이기 때문에 점화식을 통해 문제를 해결하면 쉽게 해결가능하다. 문제풀이 해당문제의 LCS(Longest Common SubString)의 점화식을 구해보면 다음과 같다. $$ LCS(X_i, Y_j) = \begin{..
BaekJoon(9252)::LCS 2
문제 9252번: LCS 2 LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 문제파악 해당문제 또한 백준1904번의 LCS와 같이 제목에서부터 해답을 전달해주고 있다. Longest Common Sub-sequence Algorithm(LCS, 최장 공통 부분수열) Longest Common Sub-sequence Algorithm(LCS) LIS알고리즘을 정리하다가 비슷한류의 알고리즘으로 보여 함께 이어서 정리하려고 한다. 이문제 또한 아마 DP를 이용한 문제가 될것으로 생각된다. ..
BaekJoon(9251)::LCS
문제 9251번: LCS LCS(Longest Common Subsequence, 최장 공통 부분 수열)문제는 두 수열이 주어졌을 때, 모두의 부분 수열이 되는 수열 중 가장 긴 것을 찾는 문제이다. 예를 들어, ACAYKP와 CAPCAK의 LCS는 ACAK가 된다. www.acmicpc.net 문제파악 해당문제는 단순하게 제목에서부터 풀이법을 말해주고있다. Longest Common Sub-sequence Algorithm(LCS, 최장 공통 부분수열) Longest Common Sub-sequence Algorithm(LCS) LIS알고리즘을 정리하다가 비슷한류의 알고리즘으로 보여 함께 이어서 정리하려고 한다. 이문제 또한 아마 DP를 이용한 문제가 될것으로 생각된다. 다만 문자로 dev-sanghu..
JAVA::JVM에 대한 이해
이 글은 '백기선의 더 자바, 코드를 조작하는 다양한 방법' 강좌를 듣고 해당 내용을 공부하며 정리한 글입니다. JVM에 대한 이해 자바를 사용할 때 사용하게 되는 JVM, JRE, JDK 그리고 자바에 대해서 알아보려고 한다. JVM이란? Java Virtual Machine의 약자. 자바 애플리케이션을 클래스 로더를 통해 읽어 들여 자바 API와 함께 실행하는 것으로 JAVA와 OS사이에서 중개자 역할을 수행하여 JAVA가 OS의 영향을 받지 않고 재사용할 수 있게 해준다. 자바, JVM, JRE, JDK JVM(Java Virtual Machine) 자바 가상 머신으로 자바 바이트 코드(.class파일)를 OS에 특화된 코드로 변환(인터프리터와 JIT 컴파일러)하여 실행 바이트 코드를 실행하는 표준..
Longest Common Sub-sequence Algorithm(LCS, 최장 공통 부분수열)
Longest Common Sub-sequence Algorithm(LCS) LIS알고리즘을 정리하다가 비슷한류의 알고리즘으로 보여 함께 이어서 정리하려고 한다. 이문제 또한 아마 DP를 이용한 문제가 될것으로 생각된다. 다만 문자로 이루어진 수열이기에 LIS에서 사용했던 이분탐색은 불가능해보인다. 그리고 해당 문제에서도 길이 뿐만이 아닌 해당 부분수열을 구하는 방법도 알아보도록 하겠다. 정의(Definition) 최장 공통 부분수열으로 두 문자열의 가장 긴 공통된 부분문자열을 구하는 문제 Longest Common Sub-sequence 불린다. 여기서 string이 아닌 sequence는 사용하는 이유는 각 단어가 갖는 개념적 의미가 다르기 때문이다. string : 연속된 문자열 sequence :..
BaekJoon(1904)::01타일
문제 1904번: 01타일 지원이에게 2진 수열을 가르쳐 주기 위해, 지원이 아버지는 그에게 타일들을 선물해주셨다. 그리고 이 각각의 타일들은 0 또는 1이 쓰여 있는 낱장의 타일들이다. 어느 날 짓궂은 동주가 지원이 www.acmicpc.net 문제 파악 이 문제는 결국 00타일 1타일 두개로 N길이의 타일을 만들수 있는 가지수를 구하는 문제이다. 그림으로 그려봐도 알 수 있는 것처럼 결국 N-2 타일에 00을 붙이냐 N-1타일에 1을 붙이냐의 차이의 문제가 될것같다 $$f(n) = f(n-1) + f(n-2)$$ 문제 풀이 문제 파악과정에서 알게 된 수식을 보면 피보나치 수열과 같음을 알 수 있다. 피보나치 수열의 단점은 시간이 오래 걸릴수 있다는 점이다. 이 점을 해결하기 위해 dp를 사용할 예정이..
BaekJoon(9184)::신나는 함수 실행
문제 9184번: 신나는 함수 실행 입력은 세 정수 a, b, c로 이루어져 있으며, 한 줄에 하나씩 주어진다. 입력의 마지막은 -1 -1 -1로 나타내며, 세 정수가 모두 -1인 경우는 입력의 마지막을 제외하면 없다. www.acmicpc.net 문제 파악 if a 20, then w(a, b, c) returns: w(20, 20, 20) if a < b and b < c, then w(a, b, c) returns: w(a, b, c-1) + w(a, b-1, c-1) - w(a, b-1, c) otherwise it returns: w(a-1, b, c) + w(a-1, b-1, c) + w(a-1, b, c-1) - w(a-1, b-1, c-1) 문제에서 이미 재귀함수가 주어지기 때문에 따로 재..
Longest Increasing Sub-sequence Algorithm(LIS, 최장 증가 부분 수열 알고리즘)
Longest Increasing Sub-sequence Algorithm(LIS) 동적계획법(DP)문제를 풀다가 우연찮게 해당 알고리즘의 문제를 풀게되면서 이전 기억을 살려 다시한번 정리를 해보려고 한다. 해당 문제는 최장길이만 구하다 보니 동적계획법을 이용해서 해결이 되었지만, 더 다양한 문제를 해결하기 위해 그리고 LIS알고리즘을 더 잘 이해하기 위해 해당 페이지에 정리를 하려고 합니다. 정의(Definition) 주어진 수열에서 오름차순으로 정렬된 가장 긴 부분수열을 찾는 알고리즘 부분 수열은 연속적이거나 유일한 필요가 없다. 최장길이를 구하거나, 해당 부분수열을 구할 수 있다. 여러 시간복잡도로 문제를 해결할 수 있다. 부분수열이란? 주어진 수열에서 특정 원소들을 선택해서 만들어진 수열을 그 수..
BaekJoon(11053)::가장 긴 증가하는 부분 수열
문제 11053번: 가장 긴 증가하는 부분 수열 수열 A가 주어졌을 때, 가장 긴 증가하는 부분 수열을 구하는 프로그램을 작성하시오. 예를 들어, 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이 www.acmicpc.net 문제 파악 수열 A = {10, 20, 10, 30, 20, 50} 인 경우에 가장 긴 증가하는 부분 수열은 A = {10, 20, 10, 30, 20, 50} 이고, 길이는 4이다. 첫째 줄에 수열 A의 크기 N (1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄에는 수열 A를 이루고 있는 Ai가 주어진다. (1 ≤ Ai ≤ 1,000) LIS 알고리즘으로 해결이 가능한 문제이다...