th42500의 TIL

배열(Array) 본문

Algorithm/Concept

배열(Array)

th42500 2021. 12. 22. 23:10

배열(Array)

배열이란?

👉 일정한 자료형의 변수들을 하나의 이름으로 열거하여 사용하는 자료구조

 

배열의 필요성

👉 프로그램 내에서 여러 개의 변수가 필요할 때, 한번의 선언만으로 둘 이상의 변수를 선언할 수 있음

 

배열의 선언과 접근

1) 배열의 선언

자료형 이름[] = new 자료형[길이];

    int arr[] = new int[10];

2) 배열의 접근

배열명[인덱스번호] = 값;

    arr[0] = 20;

 

배열 순회

👉 ex) 2*n 배열 순회하는 방법

    for(int i=0; i< arr.length(); i++) {
        for(int j=0; j<arr[i].length(); j++) {
            arr[i];  // 필요한 연산 수행하기 
        }
    }

 

배열의 Shift

Shift 작업은 1차원 배열보다 2차원 배열을 시계방향 또는 반시계방향으로 회전시키는 문제에서 많이 활용

1️⃣ 배열 원소 오른쪽 Shift

package Array;

import java.util.Arrays;

public class ShiftTest {

    public static void main(String[] args) {
        int[] arr = new int[]{1, 2, 3, 4, 5};

        System.out.println(Arrays.toString(arr));
        rightShift(arr);
        System.out.println(Arrays.toString(arr));
    }

    private static void rightShift(int[] arr) {
        int temp = arr[arr.length-1];  // 마지막 원소 저장해두기
        for (int i = arr.length-1; i > 0; i--) {
            arr[i] = arr[i-1];
        }
        arr[0] = temp;  // 저장해두었던 원소 다시 채우기
    }

}

rightShift 실행 결과

2️⃣ 배열 원소 왼쪽 Shift

package Array;

import java.util.Arrays;

public class ShiftTest {

	public static void main(String[] args) {
		int[] arr = new int[]{1, 2, 3, 4, 5};
		
		System.out.println(Arrays.toString(arr));
		leftShift(arr);
		System.out.println(Arrays.toString(arr));
	}

	private static void leftShift(int[] arr) {
		int temp = arr[0];
		for (int i = 0; i < arr.length; i++) {
			arr[i] = arr[i+1];
		}
		arr[arr.length-1] = temp;
	}

}

leftShift 결과

더보기

❓ rightShift()와 leftShift() 함수에 return이 없는 이유??

❗ rightShift()와 leftShift()에서 arr의 내용이 수정이 된다고 생각할 수 있다.

그러나, 매개변수로 정수형 배열 arr이 넘어갈 때, 배열 자체가 매개변수로 전달되는 것이 아닌 참조값이 넘어가는 것이므로 수정된 배열을 다시 return 해줄 필요가 없음

 

'Algorithm > Concept' 카테고리의 다른 글

조합 (Combination)  (0) 2022.03.14
BFS (Breadth-First Search)  (0) 2021.12.25
DFS (Depth-First Search)  (0) 2021.12.22
그리디 알고리즘  (0) 2021.12.20
순열(Permutation)과 조합(Combination)은 어떻게 구분할까?  (0) 2021.12.16
Comments