[문제]
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
[내 풀이]
import java.util.Arrays;
class Solution {
public int[] solution(int[] num_list) {
int len = num_list.length;
int[] answer;
if (num_list[len - 2] < num_list[len - 1]) {
answer = new int[len + 1];
answer[len] = num_list[len - 1] - num_list[len - 2];
} else {
answer = new int[len + 1];
answer[len] = 2 * num_list[len - 1];
}
for (int i = 0; i < len; i++) {
answer[i] = num_list[i];
}
return answer;
}
}
- answer 배열의 맨 마지막 원소에 값을 할당한 후, number_list 복사
*인덱스는 음수 사용이 불가
* Java에서의 배열에 원소 추가 -> JAVA의 경우 배열에 추가/삭제가 어려움 ( 새 배열로 복사해 해결)
- 배열에 원소 추가: copyOf() 메서드 사용 (원본 배열의 값을 복사하고 배열의 크기가 1 크게 만들어, 배열의 마지막 위치에 추가값 할당
int[] arr1 = Arrays.copyOf(arr, n+1, addvalue);
- 배열에서 원소 삭제:
import java.util.Arrays;
String[] strArr2 = {"apple", "banana", "cherry", "berry"};
String[] copyOfStr = Arrays.copyOf(strArr2, strArr2.length - 1); // ["banana", "cherry", "berry"]
: 첫번째 원소 삭제
import java.util.Arrays;
// 마지막 값 제거
String[] strArr3 = {"apple", "banana", "cherry", "berry"};
String[] copyOfRangeStrArr3 = Arrays.copyOfRange(strArr3, 0, strArr3.length - 1);
: 원본 배열, 복사 시작할 인덱스와 끝 인덱스 지정
* copyOf()는 얕은 복사, copyOfRange()는 깊은 복사
[다른 사람의 풀이]
class Solution {
public int[] solution(int[] num_list) {
int[] answer = new int[num_list.length+1];
for(int i=0; i<num_list.length; i++){
answer[i] = num_list[i];
}
answer[num_list.length] = num_list[num_list.length-1] > num_list[num_list.length-2] ? num_list[num_list.length-1]-num_list[num_list.length-2]:num_list[num_list.length-1]*2;
return answer;
}
}
먼저 배열을 복사한 후, 마지막 원소를 삼항연산자로 해결
'개발 > 코테' 카테고리의 다른 글
[JAVA] 수 조작하기 2 (1) | 2024.04.12 |
---|---|
[JAVA] 수 조작하기1 (0) | 2024.04.11 |
[JAVA] 이어 붙인 수 (0) | 2024.04.11 |
[JAVA] 주사위게임2 (0) | 2024.04.05 |
[JAVA] 조건 문자열 (0) | 2024.04.04 |