자바의 정석 ch05. 배열

yuju9·2022년 1월 16일
0

1. 배열

배열이란?

  • '같은 타입'의 여러 변수를 하나의 묶음으로 다루는 것
  • 서로 다른 타입의 변수들로 구성된 배열은 만들 수 없다.
  • 각 저장공간이 연속적으로 배치되어 있다.
int score1, score2, score3, score4, score5
int[] score = new int[5]; //5개의 int 값을 저장할 수 있는 배열을 생성한다.

배열의 선언과 생성

선언방법선언 예
타입[] 변수이름;int[] score;
String[] name;
타입 변수이름[];int score[];
String name[];
  • 배열의 생성
//첫번째 방법
int[] score; 
score = new int[5];

//두번째 방법
int[] score = new int[5];
  • 배열의 길이: 배열의 요소의 개수, 즉 값을 저장할 수 있는 공간의 개수. 양의 정수이어야 하며 최대값은 int타입의 최대값임. 그리고 배열의 길이가 0일 수도 있음.
  • 배열이름.length: 배열의 길이
int[] arr = new int[5]; //길이가 5인 int배열
int tmp = arr.length; //arr.length의 값은 5이고 tmp에 5가 저장
  • 배열의 길이를 변경하는 방법
    1. 더 큰 배열을 새로 생성한다.
    2. 기존 배열의 내용을 새로운 배열에 복사한다.

배열의 초기화

int[] score = new int[] {50, 60, 70, 80, 90};
int[] score = {50, 60, 70, 80, 90};

배열의 출력

int[] iArr = {100, 90, 80, 70, 60};
for (int i = 0; i < iArr.length; i++) {
	System.out.println(iArr[i]);
}
  • 더 간단한 방법은 Arrays.toString(배열이름) 메서드 사용하기
  • 배열의 값을 바로 출력하면, 배열의 참조변수의 값을 출력함.

배열의 복사

  • for문
int[] arr = new int[5];
int[] tmp = new int[arr.length * 2];

for (int i = 0; i < arr.length; i++) {
	tmp[i] = arr[i];
}

arr = tmp; //참조변수 arr이 새로운 배열을 가리키게 된다.
  • System.arraycopy()
System.arraycopy(num, 0, newNum, 0, num.length);
//num[0]에서 newNum[0]으로 num.length개의 데이터를 복사



2. String 배열

String배열의 선언과 생성

String [] name = new String[5]; //3개의 문자열을 담을 수 있는 배열을 생성한다.

String배열의 초기화

String [] name  = new String[] {"Lee", "Yu", "Ju"};
String [] name = {"Lee", "Yu", "Ju"};

char배열과 String클래스

  • String클래스는 char배열에 기능을 추가한 것이다.
메서드설명
char charAt(int index)문자열에서 해당 위치(index)에 있는 문자를 반환한다.
int length()문자열의 길이를 반환한다.
String substring(int from, int to)문자열에서 해당 범위(from-to)에 있는 문자열을 반환한다.(to는 범위에 포함되지 않음)
boolean equlas(String str)문자열의 내용이 같은지 확인한다.(대소문자 구별) 같으면 결과는 true, 다르면 false가 된다.
char[] toCharArray()문자열을 문자배열(char[])로 변환해서 반환한다.



3. 다차원 배열

2차원 배열의 선언과 인덱스

선언방법선언 예
타입[][] 변수이름;int[][] score;
타입 변수이름[][];int score[][];
타입[] 변수이름[];int[] score[];
int[][] score = new int[4][3]; //4행 3열의 2차워 배열을 생성한다.

2차원 배열의 초기화

int[][] arr = {
		{1, 2, 3},
             	{4, 5, 6}
              };

가변 배열

  • 자바에서는 2차원 이상의 배열을 '배열의 배열'의 형태로 처리한다.
  • 두 번째 차원의 길이는 지정하지 않고 각 행마다 다른 길이의 배열을 생성하는 것이 가능하다.
int[][] score = new int[4][];
score[0] = new int[4]; //score[0][0]~score[0][3]
score[1] = new int[3]; //score[1][0]~score[0][2]
score[2] = new int[2]; //score[2][0]~score[0][1]
score[3] = new int[1]; //score[3][0]



배열 예제

[백준 8958 참고]
"OOXXOXXOOO"와 같은 OX퀴즈의 결과가 있다. O는 문제를 맞은 것이고, X는 문제를 틀린 것이다. 문제를 맞은 경우 그 문제의 점수는 그 문제까지 연속된 O의 개수가 된다. 예를 들어, "OOXXOXXOOO"의 점수는 1+2+0+0+1+0+0+1+2+3 = 10점이다.
OX퀴즈의 결과를 입력했을 때, 점수를 구하는 프로그램을 작성하시오. (OX퀴즈의 결과는 한줄에만 입력된다.)

import java.util.Scanner;

public class 백준배열 {

	public static void main(String[] args) {
		Scanner scanner = new Scanner(System.in);
		char[] arr = scanner.next().toCharArray();
		
        	int cnt = 0;
		int sum = 0;
				
        
		for (int i = 0; i < arr.length; i++) {
			if (arr[i] == 'O') {
				cnt++;
				sum += cnt;
			}
			else {
				cnt = 0;
			}
		}
		System.out.println(sum);

	}

}

0개의 댓글

관련 채용 정보