본문 바로가기

Code 문제 풀이(Java)

배열과 요소를 입력받아 그 요소를 배열의 맨 앞에 추가하기(System.arraycopy)

Q. 배열과 한 개의 요소를 입력받고, 입력받은 배열의 제일 앞에 입력받은 요소를 넣고 그 배열을 리턴하기.


입력 : int[]
출력 : int[]

 


내가 작성한 코드

1
2
3
4
5
6
7
8
public class Solution { 
    public int[] addToFront(int[] arr, int el) {
        int[] newarr = new int[arr.length+1];
        newarr[0= el;
        System.arraycopy(arr, 0, newarr, 1, arr.length);
        return newarr;
    } 
}
cs

나의 로직 및 생각

  • 입력받은 요소를 제일 앞 index에 넣어야하기 때문에 Arrays.copyOf 메서드는 사용할 수 없다.
  • System.arraycopy() 메서드를 사용한다.

알아야 할 것

System.arraycopy(src, srcPos, dest, destPos, length) 

  •  Object src : 복사하고자 하는 원본 소스.
  •  int sfcPos : 원본 소스의 몇번 index부터 데이터를 읽어올 것인지 위치를 정함.
  •  Object dext : 붙여넣기를 할 대상. 
  • int dextPos : 붙여넣기 하는 대상의 몇번 index에서부터 붙여넣기를 할 것인지 시작위치를 정함. 
  • int length : 원본에서 붙여넣기를 할 데이터의 길이를 정함.

이 메서드를 사용하면 붙여넣기를 할 대상을 실제로 수정한다. (write가 가능하다는 뜻.)