BOJ

[백준 5597번/JAVA] 과제 안 내신 분..? | 배열

syj0522 2024. 3. 4. 19:26

문제

풀이

  1. 길이가 30인 배열을 선언한다.
  2. 28개의 값을 받아 배열에 저장한다. >> 1을 입력받으면 1번째 인덱스(0)에, 2을 입력받으면 2번째 인덱스(1)에 저장
  3. for문을 30번 반복하며 0이 저장된 인덱스+1을 출력한다.

코드

import java.util.*;

public class Main {
    public static void main(String[] args){
        //길이가 30인 배열을 선언하고 모두 0으로 초기화
        //28명 입력받아서 각 인덱스에 저장하기
        //데이터가 0인 인덱스번호+1값을 출력
        Scanner sc = new Scanner(System.in);

        int N = 30;
        int[] arr = new int[N];
        for(int i=0; i<arr.length; i++) {
            arr[i] = 0;
        }
        for(int i=0; i<arr.length-2; i++) {
            int num = sc.nextInt();
            arr[num-1] = num;
        }
        for(int i=0; i<arr.length; i++) {
            if(arr[i]==0)
                System.out.println(i+1);
        }
    }
}

Note

  • Scanner sc = new Scanner(System.in);을 두 번째 for문 안에 넣어서 런타임 에러(NoSuchElement)가 발생하였다.
  • 마지막 for문의 반복 횟수를 arr.length-2로 설정하여 런타임 에러(ArrayIndexOutofBonds)가 발생하였다.