본문 바로가기

Programming/알고리즘

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

 

 

1차원 배열 - for문과 if문을 적절히 사용하면 쉬운문제이다.

 

 

1. 첫 줄에 수열의 길이 N, 해당 수보다 작은 수를 찾기위한 변수 X가 제공되므로

BufferedReader-> StringTokenizer로 받아준다.

 

2. 입력 두번째 줄에 수열을 받아야 하므로, StringTokenizer를 다시 호출한다.
이때, 필자는 StringTokenizer st1 = new StringTokenizer(br.readLine(), " "); 로 새로 생성해주었으나, 
기존에 생성된 StringTokenizer를 그대로 이용해도된다.

st = new StringTokenizer(br.readLine(), " ");

 

3. 수열을 생성하고, 두번째줄 Input으로 채워넣는다.

int[] arr = new int[N];
        
        for(int i=0; i<arr.length; i++){
            arr[i] = Integer.parseInt(st1.nextToken());
        }

 

4. StringBuilder를 만들어주고, 같은 수가 있는지 검사해서 있다면 추가해준다.

StringBuilder sb = new StringBuilder();
        
        for(int i=0; i<arr.length; i++){
            if(arr[i] < X){
                sb.append(arr[i]);
                sb.append(" ");
            }
        }
        System.out.print(sb);

완성된 코드


 

import java.io.IOException;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.util.StringTokenizer;


public class Main{
    public static void main(String[] args) throws IOException{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        
        int N = Integer.parseInt(st.nextToken());
        int X = Integer.parseInt(st.nextToken());
        
        StringTokenizer st1 = new StringTokenizer(br.readLine(), " ");
        
        int[] arr = new int[N];
        
        for(int i=0; i<arr.length; i++){
            arr[i] = Integer.parseInt(st1.nextToken());
        }
        
        StringBuilder sb = new StringBuilder();
        
        for(int i=0; i<arr.length; i++){
            if(arr[i] < X){
                sb.append(arr[i]);
                sb.append(" ");
            }
        }
        System.out.print(sb);
    }
}