[Java] 자바 알고리즘, 백준 알고리즘 문제풀이 "X보다 작은 수"(10871번)

X보다 작은 수


문제

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


입력

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

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


출력

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


테스트 케이스

예제 입력 1 예제 출력 1 

10 5 1 4 2 3

1 10 4 9 2 3 8 5 7 6


나의 문제풀이


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
import java.util.Scanner;
 
public class Example {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input1 = sc.nextLine(); //수열의 갯수, 정수X 
        String input2 = sc.nextLine(); //수열
        
        int intX = Integer.parseInt(input1.split(" ")[1]); //정수 X
        int serialNum = Integer.parseInt(input1.split(" ")[0]); 
        String[] serial = input2.split(" ");
        String result = "";
        for(int i =0; i<serial.length; i++) {
            int k =Integer.parseInt(serial[i]);
            if(k < intX) {
                result += " "+serial[i];
            }
        }
        System.out.println(result.trim());
    }
}
cs


- input값들이 모두 split으로 쪼개야하는 번거로움이 있지만 쪼개기만 해놓으면 쓰는데는 어렵지 않을 것으로 생각됩니다. input값들이 공백을 모두 포함하고 있고 공백에 의미가 있어서 Scanner 클래스의 nextLine으로 값을 받고 split으로 쪼개서 수열의 개수( 사실 이건 왜 입력값으로 주는지 이해는 안됨... ) 정수 X를 확보하고, 수열을 있는 순서 그대로 배열로 가지고 있어야 합니다. 왜냐하면 출력할때 정렬되서 출력되지 않고 입력된 순서대로 출력이 되야 하기때문에 입력순서 유지는 필수입니다. 그리고 for문으로 정수 X값과 비교하여 작은값들만 String result라는 문자열 빈변수에 붙여넣어줍니다. 그때 공백도 같이 붙여주고요( 앞에붙이든 뒤에붙이든 상관없습니다. 어차피 출력할때 trim처리해서 출력되기 떄문에.) 포문이 끝나면 result변수에 trim 처리를해서 출력해줍니다.

댓글

Designed by JB FACTORY