1. 배열, 용도, 선언, 사용
1) 배열의 용도와 배열을 선언하는 방법에 대해서 작성. 아래 코드에서 배열의 생성이 틀린 것은?
//[1]: 배열이란? --> 역할과 용도..필요성.
//자동차 판매 회사에서 영업사원의 판매 실적을 저장한다고 할 때 배열이 없으면 변수를 사용하여 저장할 것이다.
//영업사원이 10명 정도라면 모르겠지만, 100명이 넘는다면 변수를 일일이 선언하고 영업사원의 판매실적을 저장하는 것이 상당히 번거롭다.
//그러나 배열을 이용하면 일일이 변수를 선언할 필요없이 한방에 선언이 되고, 초기화 값도 한방에 셋팅해준다.
//즉, 배열은 동일한 데이터 타입의 값들을 하나의 배열명으로 저장시킬 수 있는 아주 편리한 자료구조이다.
//[2]: 배열의 선언
//데이터타입[] 배열명 = new 데이터타입[배열크기];
//데이터타입 배열명[] = new 데이터타입[배열크기];
//[3]: 배열의 선언 --> 배열 크기 지정 --> 배열 공간의 값은 자동으로 초기화 셋팅 됨(정수형:0, 실수형 0.0)
//[4]: 자동차 판매 회사의 영업사원 100명에 대한 영업실적을 저장하는 배열 선언 및 크기 지정 --> 2가지 방식
public class Java100_array_Basic001 {
public static void main(String[] args) {
//[4-1]: 첫번째 방식
int[] sales_table = new int[100];
//int sales_table[] = new int[100];
//[4-2]: 두번째 방식
double[] sales_table2 = new double[100];
//double[] sales_table2;
//sales_table2 = new double[100];
//선언한 배열 사용하기
System.out.println(sales_table[0]); //0
System.out.println(sales_table2[0]); //0.0
}
}
2. 배열, 인덱스, index, 초깃값
1) 배열과 인덱스의 관계에 대해서 설명하고 배열의 초깃값은 어떻게 셋팅되는지 말해보시오. 크기 10의 정수형 배열을 생성하고 인덱스로 배열 공간의 값을 출력해보시오.
//[!]: 배열과 인덱스
//크기 10의 정수형 배열을 선언하고 크기 10을 지정하면 메모리상에는 10개의 정수형 값을 담을 수 있는 공간이 생성된다.
//배열 변수는 참조형 타입으로써 해당 메모리 공간을 가리키게 된다. --> 즉, 해당 메모리 공간의 주소 값을 가진다. --> 이 주소 값을 통해서 참조한다.
//주소 값은 다른 표현으로는 참조 값이라고도 부른다.
//공간이 10개 만들어지면 동시에 자동적으로 해당 공간에 접근할 수 있는 인덱스 번호가 자동 부여된다. --> 인덱스 번호는 0부터 시작.
//따라서, 크기가 10인 배열 공간의 첫번째 인덱스는 0이고, 마지막 공간의 인덱스는 9가 된다. --> 즉, 마지막 인덱스는 "배열의크기-1"이 된다.
//인덱스 사용-->배열명[인덱스번호]
public class Java100_array_Basic002 {
public static void main(String[] args) {
//[1]: 배열의 선언 및 크기 지정 --> 학생 10명의 성적을 담는 배열
int[] scores = new int[10];
int s_size = scores.length;
System.out.println(s_size); //10
//[2]: 선언한 배열을 인덱스로 접근하여 값 출력하기
System.out.println(scores[0]); //0
System.out.println(scores[9]); //0
//System.out.println(scores[10]); //Err
System.out.println(scores[10-1]); //0
System.out.println(scores[s_size-1]); //0
}
}
3. 배열, 요소, 원소, 데이터
1) 배열 요소에 데이터 값을 넣으려면 어떻게 해야하는지 작성해보시오.
public class Java100_array_Basic003 {
public static void main(String[] args) {
//[1]: 배열 선언
int[] sales_table = new int[5];
//[2]: 선언한 배열 공간에 값 입력하기
sales_table[0] = 3;
sales_table[1] = 11;
sales_table[2] = 22;
sales_table[3] = 33;
sales_table[4] = 44;
//[3]: 값 출력하기
System.out.println(sales_table[0]); //3
System.out.println(sales_table[1]); //11
System.out.println(sales_table[2]); //22
System.out.println(sales_table[3]); //33
System.out.println(sales_table[4]); //44
System.out.println(sales_table[sales_table.length - 1]); //44
}
}
4. 정수형 배열, 요소, 원소, 초기화
1) 크기 5의 정수형 배열을 선언하고 55, 88, 60, 100, 90으로 각 요소의 값을 초기화하시오.
public class Java100_array_Basic004 {
public static void main(String[] args) {
//[1]: 배열 선언과 동시에 특정 값으로 초기화
int[] sales_table = {55, 88, 60, 100, 90};
System.out.println(sales_table[1]); //88
//[2]
int[] sales_table2 = new int[] {55,88,60,100,90}; //1번 방식보다 불편
System.out.println(sales_table2[2]); //60
//[3]
int[] sales_table3;
//sales_table3 = {55,88,60,100,90}; //Err
sales_table3 = new int[] {55,88,60,100,90};
System.out.println(sales_table3[3]); //100
}
}
2) 배열 요소의 값을 반복문을 사용하여 모두 출력하시오.
public class Java100_array_Basic005 {
public static void main(String[] args) {
//[1]: 배열 선언과 동시에 특정 값으로 초기화
int[] sales_table = {33, 52 93, 100, 87};
//[2]: 반복문을 사용하여 모든 값 출력
for(int i=0; i<sales_table.length; i++){
System.out.print(sales_table[i] + "");
}
System.out.println();
}
}
5. 정수형, 실수형, 배열, 주소값
1) 크기 5의 정수형과 실수형 배열을 생성하고 각각의 주소값(=참조값)을 출력해보시오.
public class Java100_array_Basic006 {
public static void main(String[] args) {
//[1]: 정수형과 실수형 배열 변수 선언
int[] ar = {3, 3, 3, 3, 4};
double[] ar2 = {9, 8, 2.45, 5.98, 5.11, 3.14};
//[2]: 마지막 배열 요소 값 출력
System.out.println(ar[ar.length-1]); //4
System.out.println(ar2[ar2.length-1]); //3.14
//[3]: 배열명 자체를 찍어서 출력 --> 주소(참조)값 --> I:정수형 배열, D:실수형 배열을 각각 의미함.
System.out.println(ar); //정수형 배열 --> I //[I@6d06d69c
System.out.println(ar2); //실수형 배열 --> D //[D@7852e922
}
}
6. 배열, 값, for문, 반복문
1) 배열의 값들을 for문과 같은 반복문을 사용하지 않고 한꺼번에 출력하는 코드를 작성하시오.
//[!]: Arrays.toString() 메서드
//반복문을 사용하지 않고 배열의 값을 출력하고자 한다면 Arrays클래스의 toString()메서드를 사용하면 된다.
//toString() 인자로는 배열명을 넣어주면 된다.
//사용을 위해서는 기본적으로 java.util.Arrays 임포트 선언이 되어져 있어야 한다. --> 이 때도 세미콜론 까먹지 않도록 주의!
import java.util.Arrays;
public class Java100_array_Basic07 {
public static void main(String[] args) {
//[1]: 배열 선언
int[] ar = {238,483,239,442,487,239,873};
//[2]: toString()메서드 사용하여 값 출력
System.out.println(Arrays.toString(ar)); //[]괄호의 형태로 배열 표시를 보여주면서 출력 됨.
//[238,483,239,442,487,239,873]
System.out.println(ar[0]); //238
//[3]: for 반복문
for (int i=0; i<ar.length; i++) {
System.out.print(ar[i] + "");
}
System.out.println();
//238 483 239 442 487 239 873
}
}
7. 다중, 배열, 다중 배열, 선언
1) 다음 중 다중 배열의 선언으로 맞는 것을 골라보시오.
public class Java100_array_Basic08 {
public static void main(String[] args) {
//[1]
int[] a,b,c; //가능
//[2]
intd[],e[],f[]; //가능
//[3]
int g[],h,i; //h,i는 정수로 선언됨.
}
}
8. 배열, 복사, 메서드
1) 배열을 복사하는 메서드를 말해보고 관련된 예제 코드를 구현해보시오.
//[!]: 배열 복사하기
//arraycopy()메서드 사용 --> 사용법 --> System.arraycopy(원본배열명,???,복사배열명,???,길이);
import java.util.Arrays;
public class Java100_array_Basic009 {
public static void main(String[] args) {
//[1]: ar,ar2 배열 선언
int[] ar = {1,2,3,4,5};
int[] ar2 = {1,2,3,4,5,6,7,8,9,10};
//[2]: 배열 복사하기 --> System.arraycopy()
System.arraycopy(ar,2,ar2,4,3);
System.out.println(Arrays.toString(ar)); //[1,2,3,4,5]
System.out.println(Arrays.toString(ar2)); //[1,2,3,4,3,4,5,8,9,10]
}
}
9. 1차원, 1차원 배열, 생성
1) 1, 2차원 배열의 생성 및 출력을 다양한 예제로 구현해보시오. (1차원)
public class Java100_array_OneTwoArray {
public static void main(String[] args) {
//[1]: String 1차원 배열 --> 3개의 문자열을 담을 수 있는 배열 생성하기
//String 타입의 참조 변수 3개를 저장하기 위한 공간 생성 --> 이때, 참조형 변수 각 요소는 기본값 --> null로 초기화.
String[] province = new String[3];
System.out.println(province[0]); //null
System.out.println(province[1]); //null
System.out.println(province[2]); //null
//[2]: String 배열 초기화 --> 직접 입력
province[0] = "강원도";
province[1] = "전라도";
province[2] = "경상도";
//[3]: String 배열 초기화 --> 배열 선언 및 생성시 {}로 동시에 초기화
String[] nation = new String[]{"한국","미국","중국"};
System.out.println(nation[1]); //미국
String[] flower = {"무궁화","개나리","해바라기"};
System.out.println(flower[1]); //개나리
//[4]: 반복문을 사용하여 배열 값 모두 출력
for(int i=0; i<flower.length; i++) {
System.out.print(flower[i] + "");
}
//무궁화 개나리 해바라기
//[5]: 향상된 for문으로 배열 요소 출력
for(String aaa:flower) {
System.out.print(aaa + "");
}
//무궁화 개나리 해바라기
}
}
10. 2차원, 2차원 배열, 생성, 출력
1) 1, 2차원 배열의 생성 및 출력을 다양한 예제로 구현해보시오. (2차원)
public class Java100_array_OneTwoArray2 {
public static void main(String[] args) {
//[6]: String 2차원 배열 만들기 --> 2x3 Shape
//아시아-->동북아시아(한국,중국,일본),동남아시아(태국,베트남,필리핀)
String[][] asia_nations = {
{"한국","중국","일본"},
{"태국","베트남","필리핀"}
};
System.out.println(asia_nations[0]); //동북아시아 주소를 참조하는 값 출력
System.out.println(asia_nations[1]); //동남아시아 주소를 참조하는 값 출력
System.out.println(asia_nations[0][1]); //중국
System.out.println(asia_nations[1][0]); //태국
System.out.println(asia_nations.length); //2 --> (행의 개수)
System.out.println(asia_nations[0].length); //3 --> (열의 개수)
}
}
11. 배열, 1차원, 2차원, 예제(1)
1) 1, 2차원 배열의 생성 및 출력을 다양한 예제로 구현해보시오. (메서드)
public class Java100_array_OneTwoArray3 {
public static void main(String[] args) {
String[][] asia_nations = {
{"한국","중국","일본"},
{"태국","베트남","필리핀"}
};
//[7]: 반복문을 사용한 String 2차원 배열 값 출력
for(int i=0; i<asia_nations.length; i++) {
for(int j=0; j<asia_nations[i]; j++) {
System.out.print(asia_natons[i][j] + "");
}
System.out.println();
}
//한국 중국 일본
태국 베트남 필리핀
//[8]: charAt()메서드 사용-->해당 인덱스에 있는 값을 반환-->단어를 char배열에 한 글자씩 저장할 수 있음.
String[] strAr = {"hong","kim","park"};
System.out.println(strAr[0]); //hong
System.out.println(strAr[0].charAt(2)); //n
System.out.println(strAr[1].charAt(2)); //m
System.out.println(strAr[2].charAt(2)); //r
}
}
12. 배열, 1차원, 2차원, 예제(2)
1) 1, 2차원 배열의 생성 및 출력을 다양한 예제로 구현해보시오. (메서드)
public class Java100_array_OneTwoArray4 {
public static void main(String[] args) {
String[] strA = {"hong","kim","park"};
//[9]: 반복문에서 charAt()메서드 사용
//[9-1] 잘못된 예1
for(int i=0; i<strAr.length; i++) {
System.out.print(strAr[i].charAt(i)); //hir
}
//[9-2] 잘못된 예2
for(int i=0; i<strAr.length; i++) {
for(int j=0; j<strAr.length; j++) {
System.out.print(strAr[i].charAt(j));
}
}
//honkimpar
//[9-3] 맞는 예
System.out.println(strAr.length); //3
//System.out.println(strAr[0].length); //Err --> 1차원 배열이기 때문
System.out.println(strAr[0].length()); //4
for(int i=0; i<strAr.length; i++) {
for(int j=0; j<strAr[i].length(); j++) {
System.out.print(strAr[i].charAt(j));
}
System.out.println();
}
//hong
//kim
//park
String[][] strAr = {{"hong","kim"},{"park","lee"}};
System.out.println(strAr[0].length); //2
//[10]: length vs length()
int[] aaa = new int[10];
System.out.println(aaa.length); //10 --> 배열의 길이
String bbb = "Welcome to Seoul";
System.out.println(bbb.length()); //16 --> 문자열의 길이(공백 문자 포함)
}
}
13. 사용자, 입력, 사용자 입력
1) 사용자 입력을 받아 2차원 배열을 생성하고 값을 입력하는 코드를 구현하시오. 이때 중첩 반복문을 사용하여 출력도 같이 해보시오.
import java.util.Scanner;
public class Java100_array_TwoArrayUserInput {
public static void main(String[] args) {
//[1]: 사용자 입력을 위한 객체 선언
Scanner sc = new Scanner(System.in);
//[2]: 2차원 배열의 행과 열 선언-->사용자 입력으로 처리
System.out.print("행의 갯수를 입력하고 [Enter] 치세요=");
int R = sc.nextInt();
System.out.print("열의 갯수를 입력하고 [Enter] 치세요=");
int C = sc.nextInt();
//[3]: char 2차원 배열 선언 --> 사용자로부터 R,C 입력받아-->gameMap[R][C]생성.
char[][] gameMap = new char[R][C];
//[4]: 사용자 입력을 받아서 저장할 String 배열 선언-->이때 크기를 [R]로 해주도록 한다.(★)
//크기를 R만큼만 해주면 되는 이유? --> 어차피 사용자가 입력하는 값은 안쪽 for문을 돌면서 2차원 배열에 입력하기 때문이다.
String[] strAr = new String[R];
//[5]: 2차원 배열 요소-->사용자가 입력하는 값으로 셋팅
for(int i=0; i<R; i++) {
System.out.print("1번째 행에 입력할 문자 5개를 차례대로 입력하고 [Enter] 치세요=");
strAr = sc.next();
for(int j=0; j<C; j++) {
gameMap[i][j] = strAr[i].charAt(j);
}
}
}
}
14. 사용자 입력, 배열, 2차원
1) 사용자 입력을 받아 2차원 배열을 생성하고 값을 입력하는 코드를 구현하시오. 이때 중첩 반복문을 사용하여 출력도 같이 해보시오.
import java.util.Scanner;
public class Java100_array_TwoArrayUserInput2 {
public static void main(String[] args) {
//[1]: 사용자 입력을 위한 객체 선언
Scanner sc = new Scanner(System.in);
//[2]: 2차원 배열의 행과 열 선언-->사용자 입력으로 처리
System.out.print("행의 갯수를 입력하고 [Enter] 치세요=");
int R = sc.nextInt();
System.out.print("열의 갯수를 입력하고 [Enter] 치세요=");
int C = sc.nextInt();
//[3]: char 2차원 배열 선언 --> 사용자로부터 R,C 입력받아-->gameMap[R][C]생성.
char[][] gameMap = new char[R][C];
//[4]: 사용자 입력을 받아서 저장할 String 배열 선언-->이때 크기를 [R]로 해주도록 한다.(★)
//크기를 R만큼만 해주면 되는 이유? --> 어차피 사용자가 입력하는 값은 안쪽 for문을 돌면서 2차원 배열에 입력하기 때문이다.
String[] strAr = new String[R];
//[5]: 2차원 배열 요소-->사용자가 입력하는 값으로 셋팅
for(int i=0; i<R; i++) {
System.out.print((i+1) + "번째 행에 입력할 문자 " + C + "개를 차례대로 입력하고 [Enter] 치세요=");
strAr[i] = sc.next();
for(int j=0; j<C; j++) {
gameMap[i][j] = strAr[i].charAt(j); //j인덱스에 있는 값을 하나씩 가져와서-->gameMap 좌표에 셋팅.
}
}
//[6]: 2차원 배열에 들어있는 값 출력하기
System.out.println(strAr); //주소값 출력
System.out.println(strAr[0]); //KOR
System.out.println(strAr[1]); //USA
System.out.println("=============================");
for(int i=0; i<R; i++) {
for(int j=0; j<C; j++) {
System.out.print(gameMap[i][j]);
}
System.out.println();
}
System.out.println("=============================");
//KOR
//USA
}
}
'Java > 예제로 공부하는 Java 100 문제풀이' 카테고리의 다른 글
[예제로 공부하는 Java 100 문제풀이 Part.3] 섹션0 - 함수 (0) | 2023.01.18 |
---|---|
[예제로 공부하는 Java 100 문제풀이 Part.2] 섹션0 - 조건문, 반복문 (0) | 2022.12.22 |
[예제로 공부하는 Java 100 문제풀이 Part.1] 섹션2 - 자료형, 연산자 (0) | 2022.12.13 |
[예제로 공부하는 Java 100 문제풀이 Part.1] ] 섹션1 - 환경설정, 변수 (0) | 2022.12.12 |
[예제로 공부하는 Java 100 문제풀이 Part.1] 섹션0 - 개요 (1) | 2022.12.12 |