From 90904913f4193f3cdd12fe400c52cca288a9fe5d Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Fri, 16 Jan 2026 20:53:46 +0900 Subject: [PATCH 1/2] =?UTF-8?q?[Week02]=20BOJ:=20=ED=87=B4=EC=82=AC2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../JAEHEE25.java" | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 "weekly/week02/BOJ_15486_\355\207\264\354\202\2542/JAEHEE25.java" diff --git "a/weekly/week02/BOJ_15486_\355\207\264\354\202\2542/JAEHEE25.java" "b/weekly/week02/BOJ_15486_\355\207\264\354\202\2542/JAEHEE25.java" new file mode 100644 index 0000000..e88d16f --- /dev/null +++ "b/weekly/week02/BOJ_15486_\355\207\264\354\202\2542/JAEHEE25.java" @@ -0,0 +1,32 @@ +package week02.BOJ_15486_퇴사2; + +import java.util.*; +import java.lang.*; +import java.io.*; + +class BOJ15486 { + public static void main(String[] args) throws IOException { + BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); + int N = Integer.parseInt(br.readLine()); + int[] T = new int[N]; + int[] P = new int[N]; + for (int i = 0; i < N; i++) { + StringTokenizer st = new StringTokenizer(br.readLine()); + int t = Integer.parseInt(st.nextToken()); + int p = Integer.parseInt(st.nextToken()); + T[i] = t; + P[i] = p; + } + + int max = 0; + int[] dp = new int[N + 1]; + for (int i = 0; i < N; i++) { + max = Math.max(dp[i], max); + if (i + T[i] <= N) { //기간 초과 제외 + dp[i + T[i]] = Math.max(P[i] + max, dp[i + T[i]]); + } + } + + System.out.println(Math.max(dp[N], max)); + } +} From e3b68c319ac3f720c059374189e2fff842cfa610 Mon Sep 17 00:00:00 2001 From: JAEHEE25 Date: Mon, 19 Jan 2026 18:49:00 +0900 Subject: [PATCH 2/2] =?UTF-8?q?[Personal]=20PGM:=20=EC=88=98=EC=8B=9D=20?= =?UTF-8?q?=EC=B5=9C=EB=8C=80=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...\354\265\234\353\214\200\355\231\224.java" | 81 +++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 "personal/JAEHEE25/Programmers/\354\210\230\354\213\235_\354\265\234\353\214\200\355\231\224.java" diff --git "a/personal/JAEHEE25/Programmers/\354\210\230\354\213\235_\354\265\234\353\214\200\355\231\224.java" "b/personal/JAEHEE25/Programmers/\354\210\230\354\213\235_\354\265\234\353\214\200\355\231\224.java" new file mode 100644 index 0000000..80133db --- /dev/null +++ "b/personal/JAEHEE25/Programmers/\354\210\230\354\213\235_\354\265\234\353\214\200\355\231\224.java" @@ -0,0 +1,81 @@ +import java.util.*; +class Solution { + public long solution(String expression) { + List list = toList(expression); //리스트로 분리 + + //우선순위별 계산 + String[] prior = {"*-+", "*+-", "+-*", "+*-", "-*+", "-+*"}; + long answer = 0; + for (String p : prior) { + answer = Math.max(getResult(list, p), answer); //해당 우선순위로 계산했을 때의 결과로 최댓값 찾기 + } + return answer; + } + + long getResult(List list, String p) { + Deque dq = new ArrayDeque<>(); + for (int i = 0; i < list.size(); i++) { //리스트로 덱 초기화 + dq.offerLast(list.get(i)); + } + dq.offerLast("last"); //마지막 원소임을 표시 + + int pi = 0; + char op = '.'; //.으로 초기화 + while (pi < 3) { + String val = dq.pollFirst(); + + if (val.equals("last")) { //마지막 원소일 경우 + pi++; + if (dq.size() == 1) { //1개만 남았을 경우 최종 결과 반환 + return Math.abs(Long.parseLong(dq.pollLast())); + } + dq.offerLast("last"); + continue; + } + + if (op != '.') { //계산 + long num1 = Long.parseLong(dq.pollLast()); + long num2 = Long.parseLong(val); + long result = calculate(num1, num2, op); + dq.offerLast(String.valueOf(result)); //연산 결과 삽입 + op = '.'; + continue; + } + + if (val.charAt(0) == p.charAt(pi)) { //우선순위에 해당하는 연산자라면 + op = val.charAt(0); + } else { + dq.offerLast(val); + } + } + + return 0; + } + + long calculate(long num1, long num2, char op) { + if (op == '*') { + return num1 * num2; + } else if (op == '+') { + return num1 + num2; + } else { + return num1 - num2; + } + } + + List toList(String expression) { + List list = new ArrayList<>(); + StringBuilder sb = new StringBuilder(); + for (int i = 0; i < expression.length(); i++) { + char c = expression.charAt(i); + if (!Character.isDigit(c)) { //연산자라면 + list.add(sb.toString()); + sb = new StringBuilder(); + list.add(String.valueOf(c)); + } else { + sb.append(c); + } + } + list.add(sb.toString()); + return list; + } +}