
내가 생각했을때 문제에서 원하는부분
정수 리스트 num_list가 주어질 때, 마지막 원소가 그전 원소보다 크면 마지막 원소에서 그전 원소를 뺀 값을 마지막 원소가 그전 원소보다 크지 않다면 마지막 원소를 두 배한 값을 추가하여 return하도록 solution 함수를 완성해주세요.
내가 이 문제를 보고 생각해본 부분
solution 메서드는 문제 조건에 따라 배열의 마지막 두 원소를 비교한다.
마지막 원소가 이전 원소보다 크면 두 원소의 차이를 계산하고, 그렇지 않으면 마지막 원소의 두 배를 구한다.
기존 배열보다 크기가 하나 큰 새 배열을 만들고 원래 배열을 복사한다.
새 배열 마지막에 계산한 값을 추가한다.
main 메서드는 두 가지 테스트 케이스를 실행하며, 결과를 출력한다.
Arrays.toString 메서드를 이용해 배열을 문자열로 변환하여 출력한다.
코드로 구현
class Solution {
public int[] solution(int[] num_list) {
int n = num_list.length;
int last = num_list[n - 1];
int prev = num_list[n - 2];
int addValue;
if (last > prev) {
addValue = last - prev;
} else {
addValue = last * 2;
}
int[] answer = new int[n + 1];
for (int i = 0; i < n; i++) {
answer[i] = num_list[i];
}
answer[n] = addValue;
return answer;
}
}
프로그래머스 코드
package programmers;
import java.util.Arrays;
// 프로그래머스 마지막 두 원소
public class Main18 {
public static int[] solution(int[] num_list) {
int n = num_list.length;
int last = num_list[n - 1];
int prev = num_list[n - 2];
int addValue;
if (last > prev) {
addValue = last - prev;
} else {
addValue = last * 2;
}
int[] answer = new int[n + 1];
for (int i = 0; i < n; i++) {
answer[i] = num_list[i];
}
answer[n] = addValue;
return answer;
}
public static void main(String[] args) {
// 테스트 케이스 1
int[] test1 = {2, 1, 6};
System.out.println("Test 1 결과: " + Arrays.toString(solution(test1)));
// 테스트 케이스 2
int[] test2 = {5, 2, 1, 7, 5};
System.out.println("Test 2 결과: " + Arrays.toString(solution(test2)));
}
}
위에 있는 코드를 변경한 코드
코드와 설명이 부족할수 있습니다. 코드를 보시고 문제가 있거나 코드 개선이 필요한 부분이 있다면 댓글로 말해주시면 감사한 마음으로 참고해 코드를 수정 하겠습니다.