Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
24 changes: 24 additions & 0 deletions personal/JAEHEE25/BOJ/BOJ2156.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import java.util.*;
import java.lang.*;
import java.io.*;

class BOJ2156 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
int[] wines = new int[N+1];
for (int i = 1; i <= N; i++) {
wines[i] = Integer.parseInt(br.readLine());
}

int[] dp = new int[N+1]; //dp[i] = i까지 최대로 마실 수 있는 포도주의 양
for (int i = 1; i <= N; i++) {
if (i == 1) dp[1] = wines[1];
else if (i == 2) dp[2] = wines[1] + wines[2];
else dp[i] = Math.max(dp[i-1], wines[i] + Math.max(dp[i-2], dp[i-3] + wines[i-1]));
}

System.out.println(dp[N]);

}
}
58 changes: 58 additions & 0 deletions personal/JAEHEE25/PGS/디스크_컨트롤러.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import java.util.*;

class Solution {
public int solution(int[][] jobs) {
Arrays.sort(jobs, (o1, o2) -> o1[0] - o2[0]); //요청 시각 기준 정렬

PriorityQueue<Job> waitQueue = new PriorityQueue<>(); //대기 큐

int totalTime = 0;
int ji = 0; //jobs 인덱스
int time = 0; //현재 시간
int endCnt = 0; //종료한 작업 수

while (endCnt < jobs.length) {
//현재 시간 전까지의 작업 모두 대기 큐에 삽입
while (ji < jobs.length && jobs[ji][0] <= time) {
waitQueue.add(new Job(ji, jobs[ji][0], jobs[ji][1]));
ji++;
}

//대기 큐에서 꺼내서 작업 시작
if (!waitQueue.isEmpty()) {
Job job = waitQueue.poll();
time += job.processTime;
totalTime += (time - job.requestTime);
endCnt++;
} else {
time = jobs[ji][0]; //처리할 작업이 없으면 다음 작업 요청 시간으로 이동
}
}

return totalTime / jobs.length;
}
}

class Job implements Comparable<Job> {
int num;
int requestTime;
int processTime;

Job(int num, int requestTime, int processTime) {
this.num = num;
this.requestTime = requestTime;
this.processTime = processTime;
}

@Override
public int compareTo(Job o) {
//소요시간이 짧은 것 -> 요청 시각이 빠른 것 -> 번호가 작은 것
if (this.processTime == o.processTime) {
if (this.requestTime == o.requestTime) {
return this.num - o.num;
}
return this.requestTime - o.requestTime;
}
return this.processTime - o.processTime;
}
}
35 changes: 35 additions & 0 deletions weekly/week04/BOJ_14925_목장건설하기/JAEHEE25.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package week04.BOJ_14925_목장건설하기;

import java.util.*;
import java.lang.*;
import java.io.*;

class BOJ14925 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int M = Integer.parseInt(st.nextToken());
int N = Integer.parseInt(st.nextToken());
int[][] land = new int[M][N];
int[][] dp = new int[M+1][N+1];
int L = 0;

for (int i = 0; i < M; i++) {
st = new StringTokenizer(br.readLine());
for (int j = 0; j < N; j++) {
land[i][j] = Integer.parseInt(st.nextToken());
}
}

int answer = 0;
for (int i = 1; i <= M; i++) {
for (int j = 1; j <= N; j++) {
if (land[i-1][j-1] == 0) {
dp[i][j] = Math.min(Math.min(dp[i-1][j], dp[i][j-1]), dp[i-1][j-1]) + 1; //위, 왼쪽, 왼쪽 위
answer = Math.max(dp[i][j], answer);
}
}
}
System.out.println(answer);
}
}