정수 N개로 이루어진 수열 A와 정수 X가 주어진다. 이때, A에서 X보다 작은 수를 모두 출력하는 프로그램을 작성하시오.
첫째 줄에 N과 X가 주어진다. (1 ≤ N, X ≤ 10,000)
둘째 줄에 수열 A를 이루는 정수 N개가 주어진다. 주어지는 정수는 모두 1보다 크거나 같고, 10,000보다 작거나 같은 정수이다.
X보다 작은 수를 입력받은 순서대로 공백으로 구분해 출력한다. X보다 작은 수는 적어도 하나 존재한다.
10 5
1 10 4 9 2 3 8 5 7 6
1 4 2 3
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st1 = new StringTokenizer(br.readLine());
StringTokenizer st2 = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st1.nextToken());
int X = Integer.parseInt(st1.nextToken());
int[] arr = new int[N];
for(int i=0; i<arr.length; i++) {
arr[i] = Integer.parseInt(st2.nextToken());
}
for(int i : arr) {
if(i<X) sb.append(i).append(" ");
}
System.out.println(sb);
}
}
어렵진 않았지만, 프로그래머스였다면 마지막 띄어쓰기가 있다면 정답이 아니었을텐데 백준은 좀 더 봐주는(?) 느낌.. 마지막 띄어쓰기를 없애려면 String.join(arr, “ “)
을 사용하면 됐을 것 같다는 생각이 들지만 이 녀석을 사용하기 위해서는 배열이 필요하단 말이지..
다른 사람의 코드
sb.append(i + " ");
System.out.print(sb.toString(),trim());
내가 고민했던 부분을 해결한 방법이다. sb에 담긴 내용을 String으로 변환하고 trim()
함수를 사용하여 마지막 문자 제거하기! trim() 함수는 마지막 공백을 없애준다.