작성
·
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개의 숫자에 해당하는 인덱스의 값을 증가시켜, 해당 숫자가 입력된 것을 표시합니다.
배열 A
가 int[31]
로 선언된 이유는 배열의 인덱스를 숫자 그대로 사용하기 위해서입니다. 자바에서 배열의 인덱스는 0부터 시작하기 때문에, 1부터 30까지의 숫자를 인덱스로 사용하려면 배열의 크기가 최소 31이 되어야 합니다. 이렇게 함으로써 A[1]
부터 A[30]
까지 각 숫자의 등장 여부를 표시할 수 있는 것입니다.
결과적으로, for
문을 통해 A[i]
의 값이 0인 i
를 찾아낼 때, 그 i
는 입력되지 않은 숫자를 의미하게 됩니다. 따라서, 이러한 방식으로 28개의 주어진 숫자 중에서 나타나지 않은 숫자 2개를 찾아낼 수 있습니다.