오늘 핵심
배열이란?
우리가 변수를 선언할 때 int score = 100;
int score1 = 90; 이런식으로 선언을 해준다.
그런데 이건 양이 적지만 이런게 많다면? 100개 정도 선언을 해줘야 한다면? 굉장히 귀찮은 일 일 것이다. 그리고 나중에 변수를 수정할 때도 귀찮겠지.
그럴 때 배열을 쓰면 굉장히 좋다.
배열은 변수의 집합..? 이랄까 score 같이 같은 종류의 친구를 모아둔 것이다.
배열 선언법
int[] score = new int [] {
100, 90, 80, 70 };
이런식으로 선언해주면 된다.
반복문에서도 사용 가능하다.
for (int i = 0; i<heights.length; i++) {
System.out.println("height[i] = " + heights[i]);
}
배열은 참조타입이다.
기본타입 변수를 선언할 때는 int = __ ;
참조타입을 선언할 때는 new int[]
이렇게 해줘야 한다.
예를 들면 int age = 30;
int[] age = new int[] {30, 31, 32}; 라고 입력하면
기본타입은 age에 할당된 값 30을 저장하지만
참조타입은 주소값만 저장할 수 있는 공간을 확보 한 뒤, 값이 들어오면 그 값이 있는 주소값을 저장한다.
조금 다르다.
연습문제
여기부터는 코드스테이츠에서 제공해주는 코플릿이라는 곳에 있는 문제들이다.
배열문제는 총 19문제로 꽤 많지만... 다 적기는..ㅎㅎ
문제
배열과 인덱스를 입력받아 주어진 인덱스 이후의 요소들을 갖는 새로운 배열을 리턴해야 합니다.
주의사항
반복문(for, while) 사용은 금지됩니다.
빈 배열을 입력받은 경우, 빈 배열을 리턴해야 합니다.
배열의 길이 이상의 인덱스를 입력받은 경우, 빈 배열을 리턴해야 합니다.
코드
import java.util.*;
public class Solution {
public int[] getElementsAfter(int[] arr, int n) {
// TODO:
// 새로운 배열 생성
//예외 처리 먼저
if (arr.length ==0 || n >= arr.length) return new int[] {};
return Arrays.copyOfRange( arr, n, arr.length);
//새로운 배열 생성 (원본 배열, from 인덱스, to 인덱스 +1)
}
}
설명
if (arr.length ==0 || n >= arr.length) return new int[] {};
빈 배열을 받거나, arr의 길이보다 n이 더 큰 경우 빈 배열 리턴.
new int[] {}
return Arrays.copyOfRange(arr, n, arr.length);
Arrays.copyOfRange는 새로운 배열을 만들어주는 함수이다.
Arrays.copyOf랑은 다른 함수.
copyOfRange는 python에 range랑 비슷한 것 같다.
to 인덱스까지 라서 to 인덱스에 +1을 해주지 않으면 그 숫자까지 안온다.
---작성중