[백준] 2439번: 별찍기2

     

    2439번: 별 찍기 - 2

    첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

    www.acmicpc.net

     

    반복문이라면 항상 언급되는 별찍기~

    처음엔 삼각형만 하는 것도 헷갈렸는데 기본 별찍기를 베이스로 다양한 모양으로도 만들 수 있었다👍🏻

    아래는 내가 이해한 걸 그림으로 표현한 것. 까먹거나 헷갈리면 또 보자😂

     

    N이 입력되면 n번째 줄에 별 n개가 입력되어야 한다.

    💡여기선 반대모양이니 공백도 생각해야함!

    n번째 줄에서 공백은 N에서 별 갯수 n개를 제외한 수만큼 출력된다. (N-n개)

    별은 n번째 줄에 맞는 갯수 그대로 출력되면 됨.

    바깥 for문에서 다음 줄로 넘어가게끔 해주고 안쪽 for문 두개로 공백과 별문자를 출력해주면 된다!

    (머릿속에 있는 걸 설명하려니 횡설수설...)

     

    1. BufferedReader와 StringBuilder 이용

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    
    public class BackJoon {
    
    	public static void main(String[] args) throws IOException {
    
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		StringBuilder sb = new StringBuilder();
    
    		int N = Integer.parseInt(br.readLine());
    
    		for (int i = 1; i <= N; i++) {
    			for (int j = N - i; j >= 1; j--) {
    				sb.append(" ");
    			}
    			for (int j = 0; j < i; j++) {
    				sb.append("*");
    			}
    			sb.append("\n");
    		}
    		System.out.println(sb);
    	}
    }

     

    2. BufferedReader와 BufferedWriter 이용

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    
    public class BackJoon {
    
    	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 N = Integer.parseInt(br.readLine());
    		br.close();
    
    		for (int i = 1; i <= N; i++) {
    			for (int j = N - i; j >= 1; j--) {
    				bw.write(" ");
    			}
    			for (int k = 0; k < i; k++) {
    				bw.write("*");
    			}
    			bw.write("\n");
    		}
    		bw.flush();
    		bw.close();
    	}
    }

    BufferedWriter는 잘 안써봐서 이번에 두 방법으로 사용해봤는데 아직은 어떤 차이가 있는지 정확히는 모르겠다.. 모르는게 아직 많다🤔

     

     

     

    'Algorithm' 카테고리의 다른 글

    [백준] 2588번: 곱셈  (1) 2023.04.18
    [백준] 킹, 퀸, 룩, 비숍, 나이트, 폰  (0) 2023.02.12
    [프로그래머스] 배열의 평균값  (0) 2023.02.03
    [프로그래머스] 각도기  (0) 2023.02.01

    댓글