ALGORITHM/코딩 기초 트레이닝

[프로그래머스]마지막 두 원소

jki09871 2024. 8. 5. 09:33

 

아무리 쉬운 코드도 리뷰 합니다.
문제 설명
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 
마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 
않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.

제한사항
2 ≤ num_list의 길이 ≤ 10
1 ≤ num_list의 원소 ≤ 9

입출력 예
num_list	result
[2, 1, 6]	[2, 1, 6, 5]
[5, 2, 1, 7, 5]	[5, 2, 1, 7, 5, 10]

입출력 예 설명
입출력 예 #1
마지막 원소인 6이 그전 원소인 1보다 크기 때문에 6 - 1인 5를 추가해 return합니다.

입출력 예 #2
마지막 원소인 5가 그전 원소인 7보다 크지 않기 때문에 5의 두 배인 10을 추가해 return합니다.
 ----------------------------------------------------------------------------------
class Solution {
    public int[] solution(int[] num_list) {
        int length = num_list.length;
        int lastElement = num_list[length - 1];
        int secondLastElement = num_list[length - 2];
        
        int[] answer = new int[length + 1];
        
        // 기존 배열 요소들을 복사
        System.arraycopy(num_list, 0, answer, 0, length);
        
        // 조건에 따라 새로운 요소 추가
        if (lastElement > secondLastElement) {
            answer[length] = lastElement - secondLastElement;
        } else {
            answer[length] = lastElement * 2;
        }
        
        return answer;
    }
}

설명

  1. length 변수를 사용하여 입력 배열의 길이를 저장합니다.
  2. lastElement와 secondLastElement 변수에 각각 마지막 원소와 그 전 원소를 저장합니다.
  3. 새로운 배열 answer를 기존 배열보다 하나 더 큰 크기로 초기화합니다.
  4. System.arraycopy 메서드를 사용하여 기존 배열의 요소를 answer 배열에 복사합니다.
  5. 조건문을 통해 두 원소를 비교하고, 각각의 경우에 맞는 값을 answer 배열의 마지막에 추가합니다.
  6. answer 배열을 반환합니다.

중요코드

  • lastElement와 secondLastElement를 비교:
    • lastElement가 더 크면 lastElement - secondLastElement 값을 추가하고,
    • 그렇지 않으면 lastElement * 2 값을 추가합니다.

실행결과

정확성 테스트
테스트 1 통과 (0.01ms, 78.6MB)
테스트 2 통과 (0.01ms, 71MB)
테스트 3 통과 (0.03ms, 75.4MB)
테스트 4 통과 (0.02ms, 74.4MB)
테스트 5 통과 (0.02ms, 76.1MB)
테스트 6 통과 (0.02ms, 74MB)
테스트 7 통과 (0.01ms, 71MB)
테스트 8 통과 (0.02ms, 76.3MB)
테스트 9 통과 (0.02ms, 75.6MB)
테스트 10 통과 (0.01ms, 71.7MB)
테스트 11 통과 (0.02ms, 78MB)
테스트 12 통과 (0.02ms, 77.2MB)
테스트 13 통과 (0.02ms, 79.3MB)
테스트 14 통과 (0.01ms, 72.6MB)
테스트 15 통과 (0.02ms, 73.8MB)
테스트 16 통과 (0.02ms, 77MB)
테스트 17 통과 (0.03ms, 69MB)
테스트 18 통과 (0.02ms, 75.9MB)
테스트 19 통과 (0.02ms, 83.3MB)
테스트 20 통과 (0.02ms, 74.7MB)
채점 결과
정확성: 100.0