class Solution {
public int[] solution(int[] arr, int divisor) {
int count = 0;
for(int i = 0; i < arr.length; i++){
if(arr[i]%divisor == 0){
count++;
}
} // 배열의 길이를 여기서 선언!!!!!
if(count == 0){
int answer[] = {-1};
return answer;
} // 0일때 배열에 -1을 선언!!
int[] answer = new int[count];
for(int i = 0, j = 0; i < arr.length; i++){
if(arr[i] % divisor == 0){
answer[j] = arr[i];
j++;
}
} // 배열에 값 집어넣기
Arrays.sort(answer); 오름차순 정렬!!
return answer;
}
}
배열 초기화를 한번만 해야한다는걸 망각하고 계속 해서 고생했다..
배열의 길이를 자꾸 초기화를 해서 앞에 0으로 표시되었는데..
앞으로는 코드 한줄한줄을 신경써서 봐야지 ㅠㅠ
Integer.parseInt(answer, 3);
=> 3진법을 사용해 10진수로 표현하는 함수
int w = Math.max(sizes[i][0], sizes[i][1]);
int h = Math.min(sizes[i][0], sizes[i][1]);
Math.max()는 두 인자 값 중 큰 값을 리턴!
Math.min()은 두 인자 값 중 작은 값을 리턴!
그래서, https://school.programmers.co.kr/learn/courses/30/lessons/86491
최소 직사각형 구하는 문제에서, 가로 세로 값을 비교해서 긴 쪽을 가로라고 정하여
비교 후 가로중에서의 큰값을 구하고, 세로중에서의 큰 값을 구해서
둘이 곱해주면 되는 간단한 문제였다.
수학적 함수를 잘 활용하자!
(수학 함수를 잘 몰라서, 활용을 하는걸 차근차근 익혀나가자)
import java.util.*;
public class Solution {
public int[] solution(int []arr) {
int[] answer = {};
ArrayList<Integer> list = new ArrayList<>();
int value = -1;
for(int i = 0; i < arr.length ; i++){
if(arr[i] != value){
list.add(arr[i]);
value = arr[i];
}
}
return list.stream().mapToInt(i -> i).toArray();
}
}
같은 숫자는 싫어
이 문제는 ArrayList를 하나 더 생성한 후
arr 배열의 값과 value의 값이 같지 않다면,
새롭게 생성한 배열에 arr배열의 값을 추가하면서 계속 같지 않은 것만 비교해서 넣어
결국 이전값과 비교해 중복되지 않으면 배열에 저장, 같지 않으면 저장x
int[] arr로 배열을 리턴해줘야하기 때문에
stream을 이용해 변환을 한다 -> .list.stream().mapToInt(i -> i).toArray();
이 방법은, 리스트를 스트림으로 변환 후, map을 이용해 intStream을 가져오고, 그 후 toArray()를 통해 배열로 만든다!!