loading

알고리즘/알고리즘JAVA

[백준알고리즘/JAVA/for문] 10871번 문제 : X보다 작은 수

침착곰 2021. 4. 23. 18:18
반응형

안녕하세요

백준 알고리즘 단계별로 풀어보기 3단계 10871번 문제 X보다 작은 수를 풀어봤습니다

for문과 if문을 응용하면 어렵지 않게 풀 수 있는 문제입니다

www.acmicpc.net/problem/10871

 

10871번: X보다 작은 수

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

www.acmicpc.net

 

문제

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

 

입력

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

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

 

출력

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

 

 

 

문제 풀이

 문제는 두 가지 방법으로 풀었습니다

첫 번째는 scanner를 사용해서 풀고

두 번째는 BufferedReader를 사용해서 풀어봤습니다

 

1. Scanner와 StringBuilder를 사용해서 문제를 풀었습니다

 for문을 사용해서 N만큼 수열 A를 입력받고 X보다 작은 A만 StringBuilder안에 넣어줍니다

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {	
		// Scanner 선언 및 정수 N개와 조건 X 변수를 선언한다 
		Scanner sc = new Scanner(System.in);		
		int n = sc.nextInt();
		int x = sc.nextInt();
		
		// 결과를 담을 StringBuilder 선언
		StringBuilder sb = new StringBuilder();
		
		// 반복문을 사용해서 수열 A를 입력받는다
		for(int i = 0; i < n; i++) {
			int a = sc.nextInt();
			
			// X보다 작은 A값만 SringBuilder에 값을 넣는다
			if(a < x)
			{
				sb.append(a + " ");
			}
		}
		
		// 결과값 출력
		System.out.print(sb);
	}
}

 

2. 위의 코드와 다르게 BufferedReader를 사용해서 구현했습니다

 여기에서 BufferedReader에서 StringTokenizer를 사용해 구분자 " "(스페이스)를 통해서 N과 X를 입력합니다

 이어서 반복문에서도 " "(스페이스)를 통해서 수열 A를 입력해줍니다

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

public class Main4 {
	public static void main(String[] args) throws IOException {
		// BufferedReader 선언
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		
		// StringTokenizer를 사용해서 " " 구분자로 BufferedReader를 쪼갠다
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		// 반복문을 실행할 N 및 값을 비교할 X 선언
		int n = Integer.parseInt(st.nextToken());
		int x = Integer.parseInt(st.nextToken());

		// 결과를 담을 StringBuilder 선언
		StringBuilder sb = new StringBuilder();
		
		// 반복문에서 다시 입력받을 것 이므로 StringTokenizer 초기화
		st = new StringTokenizer(br.readLine(), " ");
		
		// 반복문을 사용해서 수열 A를 입력
		for(int i = 0; i < n; i++) {
			int a = Integer.parseInt(st.nextToken());
			
			// 수열 A중에서 X보다 작은 것만 SringBuilder에 넣는다
			if(a < x)
			{
				sb.append(a).append(" ");
			}
		}
		
		// 결과 출력
		System.out.println(sb);
	}
}

 

여기까지 백준알고리즘의 10871번 문제 X보다 작은 수를 풀은 내용이었습니다

알고리즘 3단계 for문의 풀이를 모두 끝냈습니다

다음에는 4단계 while문 푼 내용에 대해서 포스팅하겠습니다!

알고리즘을 푸는데 제 글이 참고가 되셨으면 좋겠습니다!!

 

이전 문제 : 2021.04.22 - [알고리즘/알고리즘JAVA] - [백준알고리즘/JAVA/for문] 2439번 문제 : 별 찍기 - 2

반응형
그리드형