Quest

[과제] 배열

_유니 2022. 11. 1. 18:06

 

하.. 배열 어렵다

문제 보자마자 순간 정지됨...

수업 들으면 따라가는데 혼자 하려니까 모르겠다,,

 

이번 과제 지금까지 세 번째 푸는 중 ^^

 

이거 끝나면 자버지 들으러 가야지

 


 

문제 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