본문 바로가기

개발/코테

[JAVA] 마지막 두 원소

[문제]

정수 리스트 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