ToBe끝판왕

[ 알고리즘 ] 백준 10871번 문제 - 자바( JAVA ) 본문

■ 알고리즘/백준 JAVA

[ 알고리즘 ] 백준 10871번 문제 - 자바( JAVA )

업그레이드중 2022. 5. 27. 11:12
반응형

주의사항

※ 백준에서 정해진 출력 형식을 출력해야 한다.
※ 백준 알고리즘에서는 클래스명을 Main으로 해주어야 한다.

 


 

백준 10871번 문제

 

백준 알고리즘의 단계별 문제 풀기

3단계 < 반복문 >

 

 

 해당 문제 링

https://www.acmicpc.net/problem/10871

 

10871번: X보다 작은 수

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

www.acmicpc.net

 


 

코딩 하기

 

1) Scanner 사용( + 배열 )

import java.util.Scanner;

public class Main {

	public static void main( String[] args ) {
    
    	Scanner sc = new Scanner( System.in );
        
        int N = sc.nextInt();
        int X = sc.nextInt();
        int arr[] = new int[N];
        
        for( int i=0; i<N; i++ ) {
        	arr[i] = sc.nextInt();
        }
        
        sc.close();
        
        for( int i=0; i<N; i++ ) {
        	if( arr[i] < X ) {
            	System.out.print( arr[i] + " " );
            }
        }
    }
}

 

 

2) Scanner 사용 ( + StringBuilder )

import java.util.Scanner;

public class Main {
	
    public static void main( String[] args ) {
    
    	Scanner sc = new Scanner( System.in );
        
        int N = sc.nextInt();
        int X = sc.nextInt();
        
        StringBuilder sb = new StringBuilder();
        
        for( int i=0; i<N; i++ ) {
        	int a = sc.nextInt();
            
            if( a < X ) {
            	sb.append( a + " " );
            }
        }
	System.out.print( sb );
   }
}

 

 

3) BufferedReader 사용

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
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() );
        
        StringBuilder sb = new StringBuilder();
        
        st = new StringTokenizer( br.readLine(), " " );
        
        for( int i=0; i<N; i++ ) {
        	int a = Integer.parseInt( st.nextToken() );
            
            if( a < X ) {
            	sb.append(a).append( " " );
            }
        }
        System.out.println( sb );
    }
}

 

 

 

문제 해결

 

1) Scanner 사용( + 배열 )

 

•  arr[ ] 배열을 선언하고 배열의 크기를 N으로 할당한다.

•  배열에 입력받은 수열을 반복문을 통해서 저장한다.

•  다시 한번 반복문으로 배열을 검사하여 X보다 작은 수를 출력한다.

int arr[] = new int[N];
        
        for( int i=0; i<N; i++ ) {
        	arr[i] = sc.nextInt();
        }
        
        sc.close();
        
        for( int i=0; i<N; i++ ) {
        	if( arr[i] < X ) {
            	System.out.print( arr[i] + " " );
            }

 

 

 

2) Scanner 사용( + StringBuilder )

입력받음과 동시에 if 조건문을 통해서 X보다 작은 경우 StringBuilder에 저장하여 출력한다.

StringBuilder sb = new StringBuilder();
        
        for( int i=0; i<N; i++ ) {
        	int a = sc.nextInt();
            
            if( a < X ) {
            	sb.append( a + " " );
            }
        }
	System.out.print( sb );
   }

 

 

 

2) BufferedReader 사용

•  StringTokenizer를 사용해 구분자 " " ( 스페이스, 공백 ) 을 통해서 N과 X를 입력한다.

•  for 반복문에서도 " " ( 스페이스, 공백 ) 을 통해서 수열 a를 입력한다.

StringTokenizer st = new StringTokenizer( br.readLine(), " " );
  if( a < X ) {
            	sb.append(a).append( " " );

 

 

 

•  각 코딩 시간 비교

 

 

 

 

반응형
Comments