[과제] 배열
하.. 배열 어렵다
문제 보자마자 순간 정지됨...
수업 들으면 따라가는데 혼자 하려니까 모르겠다,,
이번 과제 지금까지 세 번째 푸는 중 ^^
이거 끝나면 자버지 들으러 가야지
문제 1. 길이가 10인 배열을 선언하고 1부터 10까지의 값을 반복문을 이용하여
순서대로 배열 인덱스에 넣은 후 그 값을 출력하세요.
package com.yh.practice.array;
public class ArrayPractice {
public void practice1() {
int[] arr = new int[10]; // 배열 선언
for (int i = 0; i < arr.length; i++) { // 값 대입
arr[i] = i + 1;
}
for (int i = 0; i < arr.length; i++) { // 배열 출력
System.out.print(arr[i] + " ");
}
}
}
1 2 3 4 5 6 7 8 9 10
문제 2. 길이가 10인 배열을 선언하고 1부터 10까지의 값을 반복문을 이용하여
역순으로 배열 인덱스에 넣은 후 그 값을 출력하세요.
package com.yh.practice.array;
public class ArrayPractice {
public void practice2() {
int[] arr = new int[10]; // 배열 선언
for (int i = 0; i < arr.length; i++) { // 값 대입
arr[i] = 10 - i;
}
for (int i = 0; i < arr.length; i++) { // 배열 출력
System.out.print(arr[i] + " ");
}
}
}
10 9 8 7 6 5 4 3 2 1
문제 3. 사용자에게 입력받은 양의 정수만큼 배열 크기를 할당하고
1부터 입력받은 값까지 배열에 초기화한 후 출력하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice3() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("양의 정수 : ");
int num = sc.nextInt(); // 정수를 입력받는 메소드
int[] arr = new int[num]; // 배열 선언 및 할당
for (int i = 0; i < arr.length; i++) { // 배열 초기화(값 대입)
arr[i] = i + 1;
}
for (int i = 0; i < arr.length; i++) { // 배열 출력
System.out.print(arr[i] + " ");
}
}
}
양의 정수 : 10
1 2 3 4 5 6 7 8 9 10
문제 4. 길이가 5인 String 배열을 선언하고 "사과", "귤", "포도", "복숭아", "참외"로 초기화한 후
배열 인덱스를 활용해서 복숭아를 출력하세요.
package com.yh.practice.array;
public class ArrayPractice {
public void practice4() {
String[] fruits = { "사과", "귤", "포도", "복숭아", "참외" }; // 배열 선언 및 초기화
for (int i = 0; i < fruits.length; i++) { // 배열 출력
if (fruits[i].equals("복숭아")) { // fruits[i]가 복숭아일 때
System.out.println(fruits[i]);
}
}
}
}
복숭아
문제 5. 문자열을 입력받아 문자 하나하나를 배열에 넣고 검색할 문자가 문자열에 몇 개 들어가 있는지
개수와 몇 번째 인덱스에 위치하는지 인덱스를 출력하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice5() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("문자열 : ");
String str = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
char[] arr = new char[str.length()]; // 배열 선언
for (int i = 0; i < arr.length; i++) { // 값 대입
arr[i] = str.charAt(i);
}
System.out.print("문자 : ");
char ch = sc.nextLine().charAt(0); // 문자열에서 index에 해당하는 단일문자 추출
int count = 0;
System.out.print(str + "에 " + ch + "가 존재하는 위치(인덱스) : ");
for (int i = 0; i < arr.length; i++) { // 배열 출력
if (arr[i] == ch) {
System.out.print(i + " ");
count++;
}
}
System.out.println();
System.out.print(ch + " 개수 : " + count);
}
}
문자열 : apple
문자 : p
apple에 p가 존재하는 위치(인덱스) : 1 2
p 개수 : 2
문제 6. "월" ~ "일"까지 초기화된 문자열 배열을 만들고 0부 6까지 숫자를 입력받아
입력한 숫자와 같은 인덱스에 있는 요일을 출력하고
범위에 없는 숫자를 입력 시 "잘못 입력하셨습니다."를 출력하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice6() {
String[] days = { "월", "화", "수", "목", "금", "토", "일", }; // 배열 생성 및 초기화
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("0 ~ 6 사이 숫자 입력 : ");
int num = sc.nextInt(); // 정수를 입력받는 메소드
if (num < 0 || num > 6) { // 범위에 없는 숫자를 입력 시
System.out.println("잘못 입력하셨습니다.");
} else {
for (int i = 0; i < days.length; i++) { // 배열 출력
if (num == i) {
System.out.print(days[i] + "요일");
}
}
}
}
}
0 ~ 6 사이 숫자 입력 : 2
수요일
0 ~ 6 사이 숫자 입력 : 7
잘못 입력하셨습니다.
문제 7. 사용자가 배열의 길이를 직접 입력하여 그 값만큼 정수형 배열을 선언 및 할당하고
배열의 크기만큼 사용자가 직접 값을 입력하여 각각의 인덱스에 값을 초기화하세요.
그리고 배열 전체 값을 나열하고 각 인덱스에 저장된 값들의 합을 출력하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice7() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("정수 : ");
int num = sc.nextInt(); // 정수를 입력받는 메소드
int[] arr = new int[num]; // 배열 선언 및 할당
int sum = 0;
for (int i = 0; i < arr.length; i++) { // 배열 초기화
System.out.print("배열 " + i + "번째 인덱스에 넣을 값 : ");
arr[i] = sc.nextInt(); // arr[i]에 정수를 입력받음
}
for (int i = 0; i < arr.length; i++) { // 배열 출력
System.out.print(arr[i] + " ");
sum += arr[i];
}
System.out.println();
System.out.print("총 합 : " + sum);
}
}
정수 : 4
배열 0번째 인덱스에 넣을 값 : 7
배열 1번째 인덱스에 넣을 값 : -2
배열 2번째 인덱스에 넣을 값 : 5
배열 3번째 인덱스에 넣을 값 : -4
7 -2 5 -4
총 합 : 6
문제 8. 3 이상인 홀수 자연수를 입력받아 배열의 중간까지는 1부터 1씩 증가하여 오름차순으로 값을 넣고,
중간 이후부터 끝까지는 1씩 감소하여 내림차순으로 값을 넣어 출력하세요.
단, 입력한 정수가 홀수가 아니거나 3 미만일 경우 "다시 입력하세요."를 출력하고
다시 정수를 받도록 하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice8() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
while (true) {
System.out.print("정수 : ");
int num = sc.nextInt(); // 정수를 입력받는 메소드
if (num >= 3 && num % 2 == 1) { // num이 3이상이면서 홀수인 경우
int[] arr = new int[num]; // 배열 선언
int value = 1;
for (int i = 0; i < arr.length; i++) { // 값 대입
arr[i] = value;
if (i < arr.length / 2) {
value++;
} else {
value--;
}
}
for (int i = 0; i < arr.length; i++) { // 배열 출력
System.out.print(arr[i] + " ");
}
return; // 해당 메소드 빠져나가는 구문
} else { // num이 홀수가 아니거나 3 미만일 경우
System.out.println("다시 입력하세요.");
}
}
}
}
정수 : 6
다시 입력하세요.
정수 : 2
다시 입력하세요.
정수 : 9
1 2 3 4 5 4 3 2 1
문제 9. 사용자가 입력한 값이 배열에 있는지 검색하여
있으면 "OOO 치킨 배달 가능", 없으면 "OOO 치킨은 없는 메뉴입니다."를 출력하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice9() {
String[] menu = { "지코바", "뿌링클", "황금올리브", "허니콤보" }; // 배열 선언
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("치킨 이름을 입력하세요 : ");
String chicken = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
for (int i = 0; i < menu.length; i++) { // 배열 출력
if (menu[i].equals(chicken)) {
System.out.println(chicken + " 치킨 배달 가능");
return; // 해당 메소드 빠져나가는 구문
}
}
System.out.println(chicken + " 치킨은 없는 메뉴입니다.");
}
}
치킨 이름을 입력하세요 : 허니콤보
허니콤보 치킨 배달 가능
치킨 이름을 입력하세요 : 양념
양념 치킨은 없는 메뉴입니다.
문제 10. 주민등록번호 성별 자리 이후부터 *로 가리고 출력하세요.
단, 원본 배열 값은 변경 없이 배열 복사본으로 변경하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice10() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("주민등록번호(-포함) : ");
String idNum = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
char[] arr = new char[idNum.length()]; // 배열 선언
for (int i = 0; i < arr.length; i++) { // 값 대입
arr[i] = idNum.charAt(i);
}
char[] arrCopy = arr.clone(); // 배열 복사
for (int i = 8; i < arrCopy.length; i++) { // 값 대입
arrCopy[i] = '*';
}
for (int i = 0; i < arrCopy.length; i++) { // 값 출력
System.out.print(arrCopy[i]);
}
}
}
주민등록번호(-포함) : 123456-1234567
123456-1******
문제 11. 10개의 값을 저장할 수 있는 정수형 배열을 선언 및 할당하고
1~10 사이의 난수를 발생시켜 배열에 초기화한 후 출력하세요.
package com.yh.practice.array;
public class ArrayPractice {
public void practice11() {
int[] num = new int[10]; // 배열 선언 및 할당
for (int i = 0; i < num.length; i++) { // 초기화(값 대입)
num[i] = (int)(Math.random() * 10 + 1);
}
for (int i = 0; i < num.length; i++) { // 배열 출력
System.out.print(num[i] + " ");
}
}
}
1 9 8 4 5 9 10 6 2 7
문제 12. 10개의 값을 저장할 수 있는 정수형 배열을 선언 및 할당하고
1~10 사이의 난수를 발생시켜 초기화 후
배열 전체 값과 그 값 중에서 최대값과 최소값을 출력하세요.
package com.yh.practice.array;
public class ArrayPractice {
public void practice12() {
int[] num = new int[10]; // 배열 선언 및 할당
for (int i = 0; i < num.length; i++) { // 초기화(값 대입)
num[i] = (int)(Math.random() * 10 + 1);
}
for (int i = 0; i < num.length; i++) { // 배열 출력
System.out.print(num[i] + " ");
}
System.out.println();
int max = num[0];
int min = num[0];
for (int i = 0; i < num.length; i++) { // 최대값 구하기
if (max < num[i]) {
max = num[i];
}
if (min > num[i]) { // 최소값 구하기
min = num[i];
}
}
System.out.println("최대값 : " + max);
System.out.println("최소값 : " + min);
}
}
9 7 6 5 3 1 6 5 9 3
최대값 : 9
최소값 : 1
문제 13. 10개의 값을 저장할 수 있는 정수형 배열을 선언 및 할당하고
1~10 사이의 난수를 발생시켜 중복된 값이 없게 배열에 초기화한 후 출력하세요.
package com.yh.practice.array;
public class ArrayPractice {
public void practice13() {
int[] num = new int[10]; // 배열 선언 및 할당
for (int i = 0; i < num.length; i++) { // 초기화(값 대입)
num[i] = (int)(Math.random() * 10 + 1);
for (int j = 0; j < i; j++) { // 중복되지 않는 값 구하기
if (num[i] == num[j]) {
i--;
}
}
}
for (int i = 0; i < num.length; i++) { // 배열 출력
System.out.print(num[i] + " ");
}
}
}
7 3 6 1 4 8 10 2 9 5
문제 14. 로또 번호 자동 생성기 프로그램을 작성하는데 중복 값 없이 오름차순으로 정렬하여 출력하세요.
package com.yh.practice.array;
import java.util.Arrays;
public class ArrayPractice {
public void practice14() {
int[] lotto = new int[6]; // 배열 선언 및 할당
for (int i = 0; i < lotto.length; i++) { // 초기화 (값 대입)
lotto[i] = (int)(Math.random() * 45 + 1);
for (int j = 0; j < i; j++) { // 중복되지 않는 값 구하기
if (lotto[i] == lotto[j]) {
i--;
}
}
}
Arrays.sort(lotto); // 오름차순으로 정렬해주는 함수
for (int i = 0; i < lotto.length; i++) { // 배열 출력
System.out.print(lotto[i] + " ");
}
}
}
6 8 9 17 35 45
문제 15. 문자열을 입력받아 문자열에 어떤 문자가 들어갔는지 배열에 저장하고
문자의 개수와 함께 출력하세요.
package com.yh.practice.array;
import java.util.Scanner;
public class ArrayPractice {
public void practice15() {
Scanner sc = new Scanner(System.in); // 스캐너 생성
System.out.print("문자열 : ");
String str = sc.nextLine(); // 문자열을 엔터 전까지 입력받는 메소드
char[] arr = new char[str.length()]; // 배열 선언
int count = 0; // 개수를 위한 변수 생성
System.out.print("문자열에 있는 문자 : ");
for (int i = 0; i < arr.length; i++) { // 값 대입
arr[i] = str.charAt(i);
boolean flag = true;
for (int j = 0; j < i; j++) { // 중복된 문자열 제거
if (arr[i] == arr[j]) {
flag = false;
}
}
if (flag) { // 배열 출력
if (i == 0) {
System.out.print(arr[i]);
} else {
System.out.print(", " + arr[i]);
}
count++;
}
}
System.out.println();
System.out.println("문자 개수 : " + count);
}
}
문자열 : application
문자열에 있는 문자 : a, p, l, i, c, t, o, n
문자 개수 : 8