Dev_TIMI

마지막 두 원소

by its_TIMI

문제 설명

정수 리스트 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합니다.

Solution.java

import java.util.Arrays; //import 빼먹으면 안됨. 그냥 거저주지않음. 

class Solution {
    public int[] solution(int[] num_list) {
        int[] result = Arrays.copyOf(num_list, num_list.length + 1);

        if ( num_list[num_list.length-1] > num_list[num_list.length-2]){
            result[num_list.length] 
                = num_list[num_list.length-1] - num_list[num_list.length-2];
        } else {
            result[num_list.length] 
                =num_list[num_list.length-1] * 2;
				}
        return result;
    }
}
import java.util.Arrays;

class Solution {
    public int[] solution(int[] num_list) {
        int[] result = Arrays.copyOf(num_list, num_list.length+1);

        if ( num_list[num_list.length-1] > num_list[num_list.length-2]){
            result[result.length -1] 
                = num_list[num_list.length-1] - num_list[num_list.length-2];
        } else{
            result[result.length -1] = num_list[num_list.length-1] * 2;
        }
        
        return result;
    }
}
import java.util.Arrays;

class Solution {
		public int[] solution(int[] num_list) {
				
			int[] result = Arrays.copyOf(num_list, num_list.length+1);
				
			int last = num_list[num_list.length-1];
			int sec = num_list[num_list.length-2];
				
			if(last>sec){
				result[num_list.length]=last-sec;
			}else{
				result[num_list.length]=last*2;
			}
				
			return result;
    }
}

 

 

공부하면서 참고한 내용들 


 

[Java]배열에 값 추가하는 방법

해당 포스팅의 3번째 방법을 사용하면~

[프로그래머스] Lv.0 마지막 두 원소.java

하쥐만 내 눈에는 4번째 방법이 더 좋아보임.

방법 4. Arrays 클래스의 copyOf 메서드

마지막 방법으로 Arrays 클래스의 copyOf() 메서드를 사용합니다.

[추가 방법]

순서 1. copyOf() 메서드를 사용하여 원본 배열의 값을 복사하고 새로운 배열의 크기를 (원본 배열의 크기 + 1)로 설정합니다.

순서 2. 새로운 배열의 마지막 위치에 추가하려는 값을 할당합니다.

순서 3. 새로운 배열을 반환합니다.

다음 예제는 String 타입의 배열에서 문자열 "EE"를 추가합니다.

class Program
{
  private static <T> T[] Add(T[] originArray, T Val) {
// 순서 1. copyOf() 메서드를 사용하여 복사
    T[] newArray = Arrays.copyOf(originArray, originArray.length + 1);

// 순서 2. 새로운 배열의 마지막 위치에 추가하려는 값을 할당
    newArray[originArray.length] = Val;

// 순서 3. 새로운 배열을 반환return newArray;
  }

  public static void main(String args[]) {
    String[] strArray = { "AA", "BB", "CC", "DD" };

    System.out.println("\\"EE\\" 추가 전: " + Arrays.toString(strArray));
    strArray = Add(strArray, "EE");
    System.out.println("\\"EE\\" 추가 후: " + Arrays.toString(strArray));
  }
}

[실행 결과]

"EE" 추가 전: [AA, BB, CC, DD]
"EE" 추가 후: [AA, BB, CC, DD, EE]

이건 3번째/4번째 방법에 관한 글.

[Java] System.arraycopy() 와Arrays.copyOf()의 차이 (배열 복사)

배열 복사 메서드

자바에서 배열을 복사할 때 사용할 수 있는 두 가지 메서드가 있다. 바로 System.arraycopy()와 Arrays.copyOf()이다. 사용법은 아래와 같다.

System.arraycopy()

System.arraycopy(원본배열, 원본 배열의 복사 시작 지점, 복사할 배열, 복사할 배열의 복사 시작 지점, 복사할 요소의 개수)

Arrays.copyOf()

Arrays.copyOf(원본배열, 원본 배열에서 복사해올 길이)

자바 배열 녀석들

예를 들어 int[] result = new int[5];면

result[-1] 가 안됨. 배열에서는 음수 사용 불가넝;;;;;

자바의 배열(Array)

배열 원소에 접근

  • 배열 변수명과 사이에 배열 원소의 인덱스를 적어 접근
  • 배열의 인덱스는 0부터 시작한다.
  • 배열의 마지막 요소의 인덱스는 **(배열의 크기 - 1)**이다.
int intArray[] = new int[10]; // index는 0~9
intArray[0] = 3; // index 0에 정수 3을 저장
intArray[1] = 2; // index 1에 정수 2를 저장
int n = intArray[1]; // intArray의 index가 3인 원소를 n에 저장

n = intArray[-2]; // 오류 발생, 인덱스는 음수 사용이 불가능하다.
n = intArray[20]; // 오류 발생, 인덱스는 배열의 크기를 넘을 수 없다.
반응형

'[Programmers][코딩 기초 트레이닝🌱]-Java' 카테고리의 다른 글

[Programmers][코딩 기초 트레이닝🌱] - Java 게시판  (0) 2023.07.04
수 조작하기  (0) 2023.07.04
이어 붙인 수  (0) 2023.07.04
코드 처리하기  (0) 2023.07.04
원소들의 곱과 합  (0) 2023.07.03

블로그의 정보

Dev_TIMI

its_TIMI

활동하기