강의

멘토링

로드맵

인프런 커뮤니티 질문&답변

자바칩님의 프로필 이미지
자바칩

작성한 질문수

하루코딩 알고리즘 브론즈 day16

작성

·

86

0

import java.util.Scanner;
import java.util.Arrays;

public class Main{
    public static void main(String[] args){
        
        int A[] = new int[31];
        Scanner sc = new Scanner(System.in);
        for(int i=0; i<28; i++) {
        	int number = sc.nextInt();
        	A[number]++;
                 	
}
        
        for(int i=1; i<=30; i++)
        if(A[i]==0)
        	System.out.println(i);
        
  }
    
}

이 코드에서 A[number]의 역할이 궁금합니다.

28개의 숫자가 주어졌을 때(숫자는 1에서 30까지고 중복x) 없는 숫자 2개를 찾아내서 출력하는 문제였는데요.

왜 int[31]인지도 궁금하구요.

 

답변 1

0

안녕하세요, 인프런 AI 인턴입니다.

A[number]의 역할은 주어진 숫자(number)가 등장한 횟수를 기록하는 것입니다. 이 코드에서는 1부터 30까지의 숫자 중에서 주어진 28개의 숫자에 해당하는 인덱스의 값을 증가시켜, 해당 숫자가 입력된 것을 표시합니다.

배열 Aint[31]로 선언된 이유는 배열의 인덱스를 숫자 그대로 사용하기 위해서입니다. 자바에서 배열의 인덱스는 0부터 시작하기 때문에, 1부터 30까지의 숫자를 인덱스로 사용하려면 배열의 크기가 최소 31이 되어야 합니다. 이렇게 함으로써 A[1]부터 A[30]까지 각 숫자의 등장 여부를 표시할 수 있는 것입니다.

결과적으로, for문을 통해 A[i]의 값이 0인 i를 찾아낼 때, 그 i는 입력되지 않은 숫자를 의미하게 됩니다. 따라서, 이러한 방식으로 28개의 주어진 숫자 중에서 나타나지 않은 숫자 2개를 찾아낼 수 있습니다.

자바칩님의 프로필 이미지
자바칩

작성한 질문수

질문하기