본문 바로가기

JAVA/연습노트

[백준-자바] 10871 배열 X보다 작은 수

 

 

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

입력
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)

둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.

출력
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.

 

 

내가 작성한 답(오답) :

 

import java.util.Arrays;

import java.util.Scanner;

 

public class J10871 {

 

public static void main(String[] args) {

Scanner sc = new Scanner(System.in);

int n = sc.nextInt();

int x = sc.nextInt();

int[] a = new int[n];

 

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

a[i] = sc.nextInt();

}

 

sc.close();

 

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

if(a[i]<x) {

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

}

}

}

}

 

틀린 이유 : 

 

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

a[i] = sc.nextInt();

if(i<x) {

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

}

}

 

 

if(i<x) 라고 작성하게 되면 i는 배열값이 아닌 인덱스이므로 x보다 작은 수가 출력되는 것이 아니라 x 밑의 순서(x==5라면 4번째 자리수까지)로 작성된 숫자가 출력되게 된다.

 

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

a[i] = sc.nextInt();

if(a[i]<x) {

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

}

}

 

그러므로 if(a[i]<x) 라고 작성해야 옳다.

'JAVA > 연습노트' 카테고리의 다른 글

[백준-자바] 5597 과제 안 내신 분  (0) 2024.03.24
[백준-자바] 10813 공 바꿔넣기  (2) 2024.03.24
[백준-자바] 2525 오븐  (0) 2024.03.20
아스키 코드 숫자 변환  (0) 2024.03.20
바구니 개수 문제  (0) 2024.03.20