From e2237df7bcd05110c7b2053598bdf024d2d47d89 Mon Sep 17 00:00:00 2001 From: LeeBaeJin Date: Mon, 13 Apr 2026 21:12:31 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B5=9C=EC=86=9F=EA=B0=92=20=EB=A7=8C?= =?UTF-8?q?=EB=93=A4=EA=B8=B0,=20=EC=9D=B4=EC=A7=84=20=EB=B3=80=ED=99=98?= =?UTF-8?q?=20=EB=B0=98=EB=B3=B5=ED=95=98=EA=B8=B0=20=ED=92=80=EC=9D=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- LeeBJ/src/FindingMinVal.java | 32 ++++++++++++++++++++ LeeBJ/src/RepeatedBinaryConversion.java | 40 +++++++++++++++++++++++++ 2 files changed, 72 insertions(+) create mode 100644 LeeBJ/src/FindingMinVal.java create mode 100644 LeeBJ/src/RepeatedBinaryConversion.java diff --git a/LeeBJ/src/FindingMinVal.java b/LeeBJ/src/FindingMinVal.java new file mode 100644 index 0000000..dca4e58 --- /dev/null +++ b/LeeBJ/src/FindingMinVal.java @@ -0,0 +1,32 @@ +/* + * 프로그래머스 코딩테스트 문제 Lv.2 정답률 높은 순 기준 + * 문제명 : 최솟값 만들기 + * 날짜 : 2026 - 04 - 10 + * 풀이 시간 : 12분 + * 시간복잡도: O(n log n) + * 공간복잡도: O(1) + */ +import java.util.Arrays; + +public class FindingMinVal { + public static void main(String[] args) { + int[] testA = {2, 7, 9, 120}; + int[] testB = {11, 26, 250, 33}; + + int answer = solution(testA, testB); + System.out.println(answer); + } + + static int solution(int[] A, int[] B) { + int answer = 0; + + Arrays.sort(A); + Arrays.sort(B); + + for (int i=0; i < A.length; i++) { + answer += A[i] * B[B.length-i-1]; + } + + return answer; + } +} diff --git a/LeeBJ/src/RepeatedBinaryConversion.java b/LeeBJ/src/RepeatedBinaryConversion.java new file mode 100644 index 0000000..ac077ee --- /dev/null +++ b/LeeBJ/src/RepeatedBinaryConversion.java @@ -0,0 +1,40 @@ +/* + * 프로그래머스 코딩테스트 문제 Lv.2 정답률 높은 순 기준 + * 문제명 : 이진 변환 반복하기 + * 날짜 : 2026 - 04 - 13 + * 풀이 시간 : 6분 + * 시간복잡도: O(n) + * 공간복잡도: O(log n) + */ +import java.util.Arrays; + +public class RepeatedBinaryConversion { + public static void main(String[] args) { + String str = "110010101001"; + + int[] answer = solution(str); + System.out.println(Arrays.toString(answer)); + } + + static int[] solution(String s) { + int tfCnt = 0; // 이진 변환 횟수 + int rzCnt = 0; // 제거된 0의 갯수 + + // s가 "1"이 될때까지 반복 (이 문제의 조건에 1이 최소 하나는 있다라는 조건이 있기에 while문 사용이 좋아보임) + while (!s.equals("1")) { + int one = 0; + for (int i=0; i