inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

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

102

자바칩

작성한 질문수 4

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 인턴

안녕하세요, 인프런 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개를 찾아낼 수 있습니다.

강의 수강 후 포트폴리오 준비 방향에 대해 조언 부탁드립니다.

2

41

1

강의 자료를 어디서 확인 할 수 있나요?

1

44

3

강의가 넘 좋아서 3번째 복습을 하고 있는데

1

36

3

실습 중 codex를 클로드코드로 대체 가능한지 문의

1

32

2