본문 바로가기

백준 알고리즘

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

반응형

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

 

10871번: X보다 작은 수

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

www.acmicpc.net



 

구현 part 들어와 처음으로 도전하는 문제다.

지금까지 복습한 것은 입출력, if, for문 정도밖에 되지 않는다.

간단한 문제지만, 아직 나에겐 어렵다.

 

푸는 방식

첫째 줄에는 N과  X를 입력하고

둘째 줄에는  N개의 숫자를 입력한다.

그러면 둘째 줄에 입력된 수들 중 X보다 작은 수를 입력받은 순서대로 출력한다.

 

입력을 기다려야하니 Scanner을 사용하고,

입력된 수를 arr[]를 사용하여 동일한 자료형의 데이터를 묶어준다.

그리고 배열안에 있는 수들 중 조건에 해당하는 수를 출력하는 순서이다.

 

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] + " ");
			}
		}
	}
}

 

세부적으로 뜯어 확인해보자.

 

public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt();   //N 입력
		int X = sc.nextInt();   //X 입력
		int arr[] = new int[N]; //배열 생성

int arr[] = new int[N];

int[ ] 속에 N이 들어간 메서드를 인스턴스화 해서 arr[]으로 지정한 것이다.

 

for(int i=0; i<N;i++) {
	arr[i] = sc.nextInt();
}

for문을 사용하여 N개의 입력받은 정수를 arr[]안에 넣는 작업을 한다.

 

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

arr[ ] 안에 넣은 0번째에서 N-1번째 까지의 모든 수를 한 번씩 꺼내서 X보다 작은지 확인하고,

X보다 작다면 그 수와 " " 를 출력한다.

println을 사용하는 것이 아닌, print를 사용해서 한 줄에 출력되게 만든다.

 

이렇게 array 사용한 문제가 완성된다.

잘 기억해서 생각한 대로 만들 수 있는 개발자가 되고싶다.

반응형