programmers/Lv 3 13

최고의 집합 [자바]

🧫 문제 분석✔️ 출처최고의 집합 level 3📖 문제 각 원소의 합이 S가 되면서 각 원소의 곱이 최대가 되는 집합을 구하는 문제이다.  각 원소의 곱이 최대가 되려면각 원소의 값이 대체로 균일해야한다.  즉, s를 n개의 원소로 나눈  균등한 값을 n개가 나눠 갖고,s를 n으로 나눴을 때 나머지 만큼 원소에 더해준다.  문제에서 오름차순 정렬로 반환하라는 것과s를 n으로 나눴을때 나머지가 n을 넘길 수 없다는 걸 알고 있을 것이다.  즉, 나머지 값을 횟수로 사용하여집합 배열 맨 마지막 인덱스부터 거꾸로 나머지 값 횟수만큼 이동하면서  1씩 추가해주면 된다.  ex)n = 3, s = 17 이라 했을 때17 /3 = 5 answer = {5,5,5} 17 % 3 = 2 2번 뒤에서부터 1씩 추가 ..

programmers/Lv 3 2025.02.20

단어 변환 [자바]

🧫 문제 분석✔️ 출처단어 변환 level 3📖 문제 begin 알파벳 중 하나를 words 단어중 하나의 알파벳으로 바꿀 수 있다.순서는 상관없고, 변경을 최소한으로 해서 target을 만들면 된다.   백트래킹하면서 words를 탐색한다.  words 각 단어의 알파벳을 begin의 각 알파벳과 비교해서 2개이상 다르면 바꾸지 않고 넘어가도록 한다.  만약 알파벳이 1개만 다르다면 그 단어를 begin으로 하고백트래킹 탐색을 한다. 🔅 문제 풀이class Solution { // 완전탐색 // 백트래킹 boolean[] visited; int min = Integer.MAX_VALUE; public int solution(String begin, Str..

programmers/Lv 3 2025.02.19

야근 지수 [자바]

🧫 문제 분석✔️ 출처야근 지수 level 3📖 문제 약간 탐욕법 문제인듯하다.Demi가 퇴근까지 N시간 남았고, 그 시간안에 남은 작업량(works)를 적절히 분배해서 작업을 하여 야근 피로도가 최소가되게 즉, S={w^2 ∣ w∈works} 이 최솟값이 되게 하면 된다.   예시 1번을 보면 4,3,3 이 남은 작업량, n이 퇴근까지 4시간 남았다.야근 피로도는 제곱이기에 값이 매우 커진다. 따라서 남은 작업량들을 균등하게 만들어야한다.  works[0] - 2, works[1] - 1,  works[2] - 1= 2, 2, 2이렇게 분배하여 최솟값을 구하면 된다.   풀이 정리해당 문제는 배열로 풀면 좋을 것 같아서 배열로 풀어보았다.각 works의 값을 인덱스로 하고 개수를 카운팅한 뒤 max..

programmers/Lv 3 2025.02.19