Integer[] arr = new Integer[score.length];
for (int i = 0; i < score.length; i++) {
arr[i] = score[i]; // 각 요소를 복사
}
Arrays.sort(arr, Collections.reverseOrder());
int sum = 0;
for(int i = 1; i <= (score.length / m); i++) {
sum += arr[i * m - 1] * m;
}
class Solution {
public String solution(int[] food) {
StringBuilder half = new StringBuilder();
for(int i = 1; i < food.length; i++) {
for(int j = 1; j <= (food[i] / 2); j++) {
half.append(i);
}
}
return half.toString() + "0" + half.reverse();
}
}
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i : ingredient) {
list.add(i);
}
int count = 0;
for(int i = 0; i <= list.size() - 4;) {
if (list.get(i) == 1 && list.get(i + 1) == 2 && list.get(i + 2) == 3 && list.get(i + 3) == 1) {
list.remove(i);
list.remove(i);
list.remove(i);
list.remove(i);
count++;
i = 0;
} else {
i++;
}
}
return count;
}
}
이렇게 풀었는데 시간초과 5개나 떠서 스택으로 해보려고 합니다
import java.util.*;
class Solution {
public int solution(int[] ingredient) {
Stack<Integer> stack = new Stack<Integer>();
int count = 0;
for(int i : ingredient) {
stack.push(i);
if(stack.size() >= 4) {
int size = stack.size();
if(stack.peek() == 1 && stack.get(size - 2) == 3 && stack.get(size - 3) == 2 && stack.get(size - 4) == 1) {
count++;
stack.pop();
stack.pop();
stack.pop();
stack.pop();
}
}
}
return count;
}
}
처음엔 stack.get(size-1)이 peek() 밑인 줄 알았는데 인덱스가 0부터 시작한다는 걸 까먹음 바보바보 ..~~
class Solution {
public int solution(String[] babbling) {
String [] possible = new String[] {"aya", "ye", "woo", "ma"};
int count = 0;
for(String s : babbling) {
boolean isCorrect = true;
for (int i = 0; i < possible.length; i++) {
if(s.contains(possible[i] + possible[i])) {
isCorrect = false;
break;
}
}
if(isCorrect) {
for(String p : possible) {
s = s.replace(p, " ");
}
if(s.trim().isEmpty()) count++;
}
}
return count;
}
}
class Solution {
public int solution(int a, int b, int n) {
int total = 0;
while(n >= a) {
int give = (n / a) * a;
int receive = (give / a) * b;
total += receive;
n = n - give + receive;
}
return total;
}
}
걍 수학문제
세 가지의 수의 합을 어떻게 반복하면서 판단하지? 제거하려니까 제거된 수에서도 답이 나올 수도 있어서 마음대로 제거 못함
-> 이건 해결
어떻게 횟수를 셌던 숫자인 걸 구별하지?
-> 걍 이거 dfs로 푸는 거였삼...
import java.util.*;
class Solution {
public String solution(String X, String Y) {
int [] countX = new int[10];
int [] countY = new int[10];
for (char c : X.toCharArray()) {
countX[c - '0']++;
}
for (char c : Y.toCharArray()) {
countY[c - '0']++;
}
StringBuffer result = new StringBuffer();
for(int i = 9; i >= 0; i--) {
int num = Math.min(countX[i], countY[i]);
for(int j = 0; j < num; j++) {
result.append(i);
}
}
if (result.length() == 0) return "-1";
if (result.toString().equals("0".repeat(result.length()))) return "0";
return result.toString();
}
}