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