728x90
문제 설명
array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.
divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.
예시
arr | divisor | return |
[5, 9, 7, 10] | 5 | [5, 10] |
[2, 36, 1, 3] | 1 | [1, 2, 3, 36] |
[3,2,6] | 10 | [-1] |
코드 해석 및 전체 코드
1. 배열 길이를 구하기
2. 나누어 떨어지는 값이 없으면 배열 값 -1 반환
3. 구한 배열 길이 만큼 배열 선언
4. 나누어 떨어지는 값 배열에 저장
5. 정렬
class Solution {
public int[] solution(int[] arr, int divisor) {
int cnt = 0; // ★ cnt변수를 설정하여 나누어떨어지는수가 몇개있는지 체크
for(int i = 0; i < arr.length; i++){
if(arr[i] % divisor == 0) cnt++;
}
if(cnt == 0) { //★ 하나도 나누어떨어지는 수가 없으면 -1리턴! 배열은 {}안에 넣어줘야해!!
int[] answer = {-1};
return answer;
}
int[] answer = new int[cnt]; //★ answer배열을 cnt개수만큼 새로 만들기!!
for(int i = 0, j = 0; i < arr.length; i++){ //★ 나누어떨어지는수가 있으면 answer배열에 담기!
if(arr[i] % divisor == 0) answer[j++] = arr[i];
}
for(int i = 0; i < cnt - 1; i++){ //★ 마지막으로 정렬!
for(int j = 0; j < cnt - 1 - i; j++){
if(answer[j] > answer[j +1]){
int temp = answer[j]; //★ temp변수를 설정해서 자리를 바꿔주도록 할 것!
answer[j] = answer[j+1];
answer[j+1] = temp;
}
}
}
return answer;
}
}
첫번째 도전 코드
1. ArrayList 선언 및 divisor로 나누어 떨어지는 값 추가
2. 배열 길이 구하기
3. AraayList 값 배열에 저장
4. 배열 정렬
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr, int divisor) {
ArrayList<Integer> list = new ArrayList<Integer>();
for(int i = 0; i < arr.length; i++){
if(arr[i] % divisor == 0) list.add(arr[i]);
}
int length = list.size() != 0 ? list.size() : 1;
int[] answer = new int[length];
if(length == 1) {
answer[0] = -1;
return answer;
}
for(int i = 0, j = 0; i < length; i++){
answer[i] = list.get(i);
}
for(int i = 0; i < length - 1; i++){
for(int j = 0; j < length - 1 - i; j++){
if(answer[j] > answer[j +1]){
int temp = answer[j];
answer[j] = answer[j+1];
answer[j+1] = temp;
}
}
}
return answer;
}
}
'Back-end > Algorithm' 카테고리의 다른 글
[항해99] Java 과제 - 알고리즘 첫날/ 기본3문제 (0) | 2022.11.18 |
---|---|
[프로그래머스][코딩테스트 입문] 각도기 (0) | 2022.11.09 |
최대값과 최소값의 합 구하기 (0) | 2022.10.20 |
[java] 사각형 클래스를 상속받아 객체지향구조 구현 (4) | 2022.09.05 |
[java] Scanner로 입력받고 별찍기 (3) | 2022.09.05 |