SEB_BE_43 / 22.12.26 회고

rse·2022년 12월 26일
0

코드스테이츠_BE_43

목록 보기
6/65

오늘 핵심

  • 자바 배열

배열이란?

우리가 변수를 선언할 때 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을 저장하지만
참조타입은 주소값만 저장할 수 있는 공간을 확보 한 뒤, 값이 들어오면 그 값이 있는 주소값을 저장한다.

주소값만 저장할 수 있는 공간 0x1234에 자리를 확보하고 요소를 입력하면 요소는 0xabcd에 저장을 한다. 0x1234에 0xabcd 라는 주소를 기록.

조금 다르다.

연습문제

여기부터는 코드스테이츠에서 제공해주는 코플릿이라는 곳에 있는 문제들이다.

배열문제는 총 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을 해주지 않으면 그 숫자까지 안온다.

---작성중

profile
기록을 합시다

0개의 댓글