알고리즘 문제 풀이209 Minimum Number of Operations to Move All Balls to Each Box 처음 생각한 답. import java.util.HashSet; import java.util.Set; class Solution { public int[] minOperations(String boxes) { int[] answer = new int[boxes.length()]; Set set = new HashSet(); int boxLength = boxes.length(); for (int i = 0; i < boxLength; i++) { if (boxes.charAt(i) == '1') { set.add(i); } } for (int i = 0; i < boxLength; i++) { int count = 0; for (int j : set) { count += Math.abs(i-j); } .. 2021. 4. 14. Find the Winner of the Circular Game 시계 방향으로 원에 n만큼 사람이 있음. 처음 인덱스에서 시작해서 k번째 인덱스를 삭제함. 삭제한 인덱스에서 k번째 사람을 또 삭제함. 1명 남을 때까지 반복. 답지 보기 전에 짠 코드 import java.util.ArrayList; import java.util.List; class Solution { public int findTheWinner(int n, int k) { List list = new ArrayList(); //요소들을 담을 리스트. for (int i = 1; i 1) { //인덱스에 증가값을 더해줌. (자기 자신부터 세므로 -1함) index += cycle-1; //인덱스가 list보다 크면 리스트를 한 바퀴 이상 돈 것임. if (index >= list.size()) { /.. 2021. 4. 11. Minimum Subsequence in Non-Increasing Order 배열에서 숫자를 뽑아서 리스트를 만들었을 때 뽑은 숫자는 배열에서 사라진다. 리스트의 총합이 배열의 총합보다 커지는 경우를 구하시오. 단, 답이 여러개면 최소 값을 구하시오. 답지 보기 전에 푼 거. import java.util.ArrayList; import java.util.Arrays; import java.util.List; class Solution { public List minSubsequence(int[] nums) { //주어진 배열 int[] array = nums; //배열의 원소들을 크기 순서대로 정렬 Arrays.sort(array); //배열의 총합을 arraySum의 대입 int arraySum = Arrays.stream(array).sum(); //숫자를 뽑아서 저장할 리.. 2021. 4. 8. Number Of Rectangles That Can Form The Largest Square 문제 링크 주어진 사각형을 자를 수만 있을 때 최대 넓이인 정사각형의 갯수를 구하라. 접근법 : 사각형의 길이를 늘릴 순 없고 자를 수만 있으므로 최소 길이인 변의 길이로 자른 게 해당 사각형의 최대 넓이임. 즉, 사각형이 있으면 최소 변의 길이를 구합니다. 그 변의 길이가 사각형 중에서 제일 큰 사각형이 우리가 구하고자하는 사각형입니다. 해당하는 정사각형과 넓이가 같은 사각형의 갯수를 구합니다. 내가 푼 방법 class Solution { public int countGoodRectangles(int[][] rectangles) { int answer = 0; //최대 넓이를 가진 도형의 갯수. int max = 0; //최대 넓이 도형 길이. for (int i = 0; i < rectangles.l.. 2021. 4. 6. Split a String in Balanced Strings 문제 링크 리트코드에서 본 모법답안 public int balancedStringSplit(String s) { int res = 0, cnt = 0; //res는 나눠질 수 있는 갯수, cnt는 L이 있으면 ++, R이면 --. for (int i = 0; i < s.length(); ++i) { cnt += s.charAt(i) == 'L' ? 1 : -1; if (cnt == 0) ++res; //cnt가 0인 경우는 R과 L의 갯수가 같은 경우, 즉 나줘질 수 있을 때 밖에 없음. } return res; } 위 코드의 경우, 갯수를 초기화 할 필요도 없고 변수를 두개나 할 필요도 없음. 답지 보기 전에 푼 거. class Solution { public int balancedStringSplit.. 2021. 4. 6. 이전 1 ··· 32 33 34 35 다음