📌 문제 링크 - https://www.acmicpc.net/problem/3745 문제주식투자를 좋아하는 정인이는 주가의 오름세를 살펴보려고 한다.정인이는 n일 동안 매일 주가를 적어놓았고, 여기서 오름세를 찾아보려고 한다.n일 동안의 주가를 p1, p2, ..., pn이라고 했을 때, 오름세란 부분수열 pi1 (i1 n일 동안 주가가 주어졌을 때, 가장 긴 오름세를 찾는 프로그램을 작성하시오. 입력입력은 여러개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스의 첫째 줄에는 주가를 관찰한 날의 수 N (N ≤ 100000)이 주어진다. 둘째 줄에는 관찰한 주가가 첫 날부터 순서대로 주어진다. 주가는 한 개 이상의 공백으로 구분되어 있으며, 그 외의 위치에서도 자유롭게 나올 수 ..
📌 문제 링크 - https://www.acmicpc.net/problem/6209 문제GSHS에서는 체력측정에서 제자리 멀리뛰기가 가장 중요하다. GSHS의 체육선생님께서는 학생들의 제자리 멀리뛰기 실력을 키워주게 하기 위해서 특수 훈련을 준비중이다.특수 훈련장소는 GSHS특수 트레이닝 센터로 이 곳은 끓는 용암으로 가득 차 있다. 체육선생님께서는 이 용암으로 가득찬 방의 가운데 있는 돌섬에 학생들을 가두고 학생들이 탈출해 나오기를 기대하고 있다. 탈출할 수 있는 방법은 단 한가지 이다. 돌섬에서 탈출구까지 띄엄 띄엄 존재하는 작은 돌섬들로 점프하여 탈출구까지 가는 것이다.돌섬에서 탈출구 사이에는 총 n개의 작은 돌섬이 있다. 선생님은 이 n개의 작은 돌섬들 중 m개를 제거하여 학생들이 ..
📌 문제 링크 - https://www.acmicpc.net/problem/1202 문제세계적인 도둑 상덕이는 보석점을 털기로 결심했다.상덕이가 털 보석점에는 보석이 총 N개 있다. 각 보석은 무게 Mi와 가격 Vi를 가지고 있다. 상덕이는 가방을 K개 가지고 있고, 각 가방에 담을 수 있는 최대 무게는 Ci이다. 가방에는 최대 한 개의 보석만 넣을 수 있다.상덕이가 훔칠 수 있는 보석의 최대 가격을 구하는 프로그램을 작성하시오. 입력첫째 줄에 N과 K가 주어진다. (1 ≤ N, K ≤ 300,000)다음 N개 줄에는 각 보석의 정보 Mi와 Vi가 주어진다. (0 ≤ Mi, Vi ≤ 1,000,000)다음 K개 줄에는 가방에 담을 수 있는 최대 무게 Ci가 주어진다. (1 ≤ Ci ≤ ..
📌 문제 링크 - https://www.acmicpc.net/problem/2611 문제자동차 경주로는 의 예와 같이 표현된다. 화살표는 각 지점을 잇는 도로를 의미하며 모든 도로는 일방통행 도로로 화살표 방향으로만 움직일 수 있다.자동차 경주의 코스는 1번 지점에서 출발하여 다시 1번 지점으로 되돌아오는 것이다. 단, 중간에는 1번 지점을 지나서는 안 된다. 경주로는 1번 지점을 제외한 어느 지점에서 출발하여도 1번 지점을 지나가지 않고서는 같은 지점으로 돌아올 수 없도록 되어 있다. 또한 1번 지점에서 다른 모든 지점으로 갈 수 있고, 다른 모든 지점에서 1번 지점으로 갈 수 있다.각 도로에는 의 예와 같이 그 도로를 지날 때 얻는 점수가 있다.1번 지점에서 출발하여 가장 많은 점수를 ..
JVM(Java Virtual Machine) 이란?JVM은 Java Virtual Machine의 줄임말로 직역하면 자바를 실행하기 위한 가상 컴퓨터라고 할 수 있다. 자바는 OS에 종속적이지 않는다는 특징을 가지고 있는데, OS에 종속받지 않고 CPU가 자바를 인식, 실행할 수 있게 해주는 것이 바로 JVM이다. 자바의 특징 중 하나인 자동 메모리 관리(Garbage Collection) 또한 JVM이 수행한다. 자바 소스코드, 즉 원시 코드(*.java)는 CPU가 인식 하지 못하므로 기계어로 컴파일 해줘야 한다.하지만 자바는 JVM을 거쳐서 OS에 도달하기 때문에 OS가 인식할 수 있는 기계어로 바로 컴파일 되는게 아닌 JVM이 인식할 수 있는 바이트 코드(*.class)로 변환된다. 자바 코드를..
이번에는 Garbage Collection 알고리즘에 대해 알아보도록 하자.GC를 수행하기 위해 Stop-The-World가 발생되고 이 때문에 애플리케이션의 지연 현상이 두드러지게 되었고, 이를 막기 위해 다양한 가비지 컬렉션 알고리즘이 나왔다. Serial GC싱글 스레드로 동작하며 Serial GC의 Young 영역은 이전 게시글에서 보았던 알고리즘(Mark-and-Sweep)대로 수행된다. Old 영역에서는 Mark-Sweep-Compaction 알고리즘이 사용되는데, 기존의 Mark-And-Sweep에 Compact라는 작업이 추가되었다. Compact는 heap 영역을 정리하기 위한 단계로 Sweep 후에 분산된 객체들을 Heap의 시작 주소로 모아 메모리가 할당된 부분과 그렇지 않은 부분으로..