본문 바로가기
Programming/Java

[JAVA] 배열을 이용한 문제풀이

by 공부합시다홍아 2023. 11. 3.
 

[JAVA] 정렬과 복사

[JAVA] 배열 연습 [JAVA] 소수(Prime Number) 구하기 반복문을 이용한 별만들기 [JAVA] 제어문 제어문 조건문 / 반복문 / 탈출문 조건문 특정 조건을 만족할 때 실행할 문장을 작성하는데 사용한다. 조건문

hong-study.tistory.com


특정 인덱스 삭제하기
  • 배열 내 요소를 삭제하는 개념은 존재하지 않는다.
  • 다만, 특정 인덱스를 삭제하는 방법은 동일한 배열을 복사한 뒤 삭제한 것 처럼 만드는 것이다.
import java.util.Arrays;

public class Main {

	public static void main(String[] args) {


		int[] a = {1,2,3,4,5,6,7,8,9, 10};
		int index= 5;
		int[] b = new int[a.length-1];
		
		for(int i=index; i<a.length-1; i++) {
			
			a[i] = a[i+1];
			
		}
		
		for(int i =0; i<b.length; i++) {
			b[i] = a[i];
		}
		
		System.out.println("문자열 이동 " + Arrays.toString(a));
		
		System.out.println("결과 " + Arrays.toString(b));

	}

}
  • 배열 a 의 값에 index 5의 위치를 가진 요소를 삭제하는 문제이다.
  • index 5번부터 마지막 요소를 왼쪽으로 한 칸씩 밀어주기 위해 반복문을 사용하고, 
  • 이전 인덱스에 다음인덱스를 저장해준다.
  • 그리고 복사할 배열 b 를 배열 a 크기보다 작게 만들어준 뒤 
  • 배열 b에 배열 a를 저정해주면 삭제한 것 처럼 보이게 된다.


배열 특정 인덱스 수정하기
  • 배열의 인덱스는 삭제는 불가하지만, 수정은 가능하다.
  • 간단히 사용하면 해당 인덱스에 다른 값을 저장해주면 되지만, 
  • 반복문을 이용하여 특정인덱스의 값을 찾고 새로운 값으로 변경해주는 문제이다.
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {
		boolean bool = true;

		String[] a = {"홍길동", "이순신", "피카츄", "라이츄", "꼬북이"};
		
		Scanner sc = new Scanner(System.in);
		System.out.print("찾을 단어를 입력하세요 : ");
		String name = sc.next();
		
		for(int i=0; i<a.length; i++) {
			
			if(a[i].equals(name)) {
				System.out.println(a[i] + " 님을 수정합니다.");
				System.out.print("수정할 단어를 입력하세요 : ");
				a[i] = sc.next();
				bool = true;
				break;
			}
			
		}
		if(bool) {
			System.out.println("수정이 완료되었습니다.");
		}else {
			System.out.println("찾는 값이 없습니다.");
		}
		System.out.println(Arrays.toString(a));
	}

}
  • 5개의 문자열을 가진 배열 a
  • name은 단어를 찾기위해 입력해주는 변수이다.
  • 이때 배열 내 동일 문자열을 찾기위해, equals 함수를 이용한다.
  • 조건문 내에 name에 입력한 문자가 배열 a 내에 있다면 해당 배열에 새로 입력을 하여 추가해준다. 
  • 이때, 입력한 값이 없을 경우를 확인은 bool 함수를 이용하여 확인을 한다. 


배열을 생성하고, 특정 문자를 입력하면 프로그램이 종료되는 문제
import java.util.Arrays;
import java.util.Scanner;

public class Main {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		String[] a = new String[100];
		int index = 0; //위치 값
		String b = "그만";
		
		System.out.println("먹고 싶은 음식을 선택하세요");
		System.out.println("입력을 중지하려면 [그만]을 입력하세요.");
		
		for(int i=0; i<a.length; i++) {
			
			System.out.print(" > ");
			a[i] = sc.next();
			
			if(a[i].equals(b)) {
				System.out.println("입력 종료");
				System.out.println("-----------입력받은메뉴-----------");
				break;
			}
			index ++;

		}
		
		for(int i=0; i<index; i++) {
			System.out.print(a[i] + " ");
		}
	}
}
  • 100의 크기를 가진 배열에 값을 입력하여 추가하고, "그만"이란 단어가 입력될 시 프로그램을 종료하는 코드이다.
  • 먼저 반복문을 사용하여 배열의 값을 계속하여 입력한 뒤 
  • 조건문을 사용해 "그만" 이라는 단어가 입력되면 반복을 중단하게 한다. 
  • 그리고 index 란 변수를 이용해 카운트를 해주게 되면 몇 번 인덱스까지 입력이 됐는지 알 수 있다.
  • 출력 시, index를 최대값으로 지정해 배열에 저장된 그만이란 단어를 제외한
  • 이전에 입력한 문자열들이 출력되도록 설정해준다. 
  • Arrays.toString 함수를 출력시 사용하지 않은 이유는 배열의 모든 인덱스를 불러와 출력을 하기때문에
  • 100가지를 모두 입력하지 않으면 입력한 값을 제외한 모든 값들이 Null 로 출력이 되기때문에 사용하지 않는다.

 

728x90

'Programming > Java' 카테고리의 다른 글

[JAVA] 매서드  (0) 2023.11.06
[JAVA] 2차원 배열  (0) 2023.11.03
[JAVA] 정렬과 복사  (0) 2023.11.02
[JAVA] 배열 연습  (0) 2023.11.01
[JAVA] 탈출문  (1) 2023.11.01