본문 바로가기

JAVA

백준 자바 2439 별 찍기 2, 10871 X보다 작은 수 풀이

< 백준 2439번 별 찍기 - 2 >

별 모양이 아닌 *를 출력해야 한다. 때문에 공백을 띄울 때도 스페이스 바 한 칸만 띄워야 한다. 이렇게 하지 않을 경우 출력 초과 또는 출력 형식 에러가 나온다. 

import java.io.*;

class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        int num = Integer.parseInt(br.readLine());
        
        for(int i = 1; i<num+1; i++){
            int th = 1;
            int pos = num-i+1;
            
            while(th++<pos){
                bw.write(" ");
            }
            
            while(pos++<=num){
                bw.write("*");
            }
            bw.newLine();   
        }
        
        bw.flush();
    }
}

백준이 이래서 번거롭다. 출력 결과를 바로 볼 수도 없고 스펙이 명확하지 않아 뭐가 잘못되었는지 알기 어렵다.

 

 

<  백준 10871번 X보다 작은 수 >

입력 : 첫째 줄에 개수 N과 숫자 X, 그리고 둘째 줄에 정수 N개가 주어진다.

출력 : N개의 정수 중 X보다 작은 수를 순서대로 공백으로 구분해 출력한다.

import java.io.*;

class Main{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        String line = br.readLine();
        int pos = line.indexOf(" ");
        int n = Integer.parseInt(line.substring(0, pos));
        int com = Integer.parseInt(line.substring(pos+1));
        
        String[] list = br.readLine().split(" ");
        
        for(int i = 0; i<n; i++){
            if(Integer.parseInt(list[i])<com){
                bw.write(list[i]);
                bw.write(" ");
            }
        }
        bw.flush();
    }
}