말하는 컴공감자의 텃밭

프로그래머스 마지막 두 원소 - 자바 (java) Arrays.copyOf 본문

알고리즘/Programmers - Java

프로그래머스 마지막 두 원소 - 자바 (java) Arrays.copyOf

현콩 2023. 4. 29. 13:37
728x90

문제는 잘 꼼꼼히 읽읍시당

 

배열이 주어지고, 마지막 원소와 그 전 원소를 비교해서 인덱스를 추가하는 문제였다.

a[1,2,3,4] 라면 4가 3보다 크므로 4-3 = 1 이 마지막 인덱스가 된다.

a[1,2,3,4,1]

 

그러면 배열을 복사하면서 크기를 +1 해주고, if문으로 비교해주면 되겠다.

 

Arrays.copyOf(복사할 배열, 복사할 길이) 를 사용했는데.

1
2
3
4
5
6
int[] arr = {123};
int[] copy = Arrays.copyOf(arr, 5); // {1, 2, 3, 0, 0}
 
String[] strArr = {"a""b""c"};
String[] strCopy = Arrays.copyOf(strArr, 10); // {"a", "b", "c", null, null, null, null, null, null, null}
 
cs

와 같이 작동한다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import java.util.*;
class Solution {
    public int[] solution(int[] num_list) {
        
        int size = num_list.length;
        int[] answer = Arrays.copyOf(num_list, size + 1);
        
        if(num_list[size-1> num_list[size-2]){
            answer[size] = num_list[size-1- num_list[size-2];
        } else {
            answer[size] = num_list[size-1* 2;
        }
        
        return answer;
    }
}
 
cs


    public int[] solution(int[] num_list) {
        
        int size = num_list.length;                                                    // 코드가 길어져서 짧게~
        int[] answer = Arrays.copyOf(num_list, size + 1);                // answer에서 길이 1추가해서 복사.
        
        if(num_list[size-1] > num_list[size-2]){                                // 원소 크기 비교
            answer[size] = num_list[size-1] - num_list[size-2];         // 마지막에 값 넣는 코드
        } else {
            answer[size] = num_list[size-1] * 2;
        }
        
        return answer;
    }
}

728x90
Comments