본문 바로가기

카테고리 없음

백준 문제10871) 배열A에서 X보다 작은숫자 Java

문제:

정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.







import java.util.Scanner;


public class Main {


   public static void main(String[] args) {

     Scanner s = new Scanner(System.in);

     //System.out.println("input n:");

        int n = s.nextInt();

        //System.out.println("input x:");

        int x = s.nextInt();

         

        int[] a = new int[n];

        for (int i = 0; i < a.length; i++) {

        //System.out.println("input a["+i+"]:");

            a[i] = s.nextInt();

        }

        s.close();

         

        for (int i = 0; i < a.length; i++) {

            if (a[i] < x) {

                System.out.print(a[i] +",");

            }

        }

    }

}


s.close();의 위치가 관련없을꺼 같아서 int x 바로 밑으로 소스를 옮겨봤더니 런타임 에러가 났다.




내가 문제를 이해하는 과정 (뇌 협찬: 민성님)




int[] a = new int[n];

 for (int i = 0; i < a.length; i++) {

 a[i] = s.nextInt(); 


1~N까지의 배열이 있다는 뜻이다. 

즉 n은 a배열의 마지막 숫자이므로 A배열은 N까지의 숫자가 있다는 뜻이므로 length함수를 사용한다. i는 배열의 숫자로 예를 들어 A가 8까지라고 하면 1,2,3,4,5,6,7,8까지 1씩 증가하므로 i++이다. a배열 칸에 들어가는 숫자는 입력받은 값이므로 .nextInt를 사용한다. 지금까지는 A배열에 숫자를 입력받는 과정이였다.




이제 X보다 작은 값을 출력하는 과정이다.


i는 배열의 번호라고 생각하면 된다.  

만약 내가 입력한 값이


10, 5

1, 3, 5, 4, 7, 8, 2, 6, 9, 10 이라고 한다면 a[2]≠2 이다.

a[2]=5, a[3]=4(배열은 0부터 세기때문)이다.


 for (int i = 0; i < a.length; i++) {

그래서 i가 0부터 1씩 증가하고 i는 0부터 9까지 1씩증가한다.

if (a[i] < x) {

만약 a[1]<5이면 

System.out.print(a[i] +",");

1이 출력된다.


a[0]=1, a[1]=3, a[2]=5, a[3]=4, a[4]=7, a[5]=8. a[6]=2, a[7]=6, a[8]=9 a[9]=10 a[10=a.length]=출력 X