별 찍기(2)

uglyduck.dev·2020년 9월 26일
0

알고리즘 🧮

목록 보기
5/16

#2445

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1

5

예제 출력 1

*        *
**      **
***    ***
****  ****
**********
****  ****
***    ***
**      **
*        *

풀이

BufferedReader + BufferdWriter 클래스 사용

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        for( int i = 1; i <= N; i++ ) {
            for( int j = 1; j <= i; j++ ) {
                bw.write("*");
            }
            for( int j = 1; j <= N-i; j++ ) {
                bw.write(" ");
            }
            for( int j = 1; j <= N-i; j++ ) {
                bw.write(" ");
            }
            for( int j = 1; j <= i; j++ ) {
                bw.write("*");
            }
            bw.write("\n");
        }
        for( int i = 1; i <= N; i++ ) {
            for( int j = N; j-1 >= i; j-- ) {
                bw.write("*");
            }
            for( int j = N-1; j >= N-i; j-- ) {
                bw.write(" ");
            }
            for( int j = N-1; j >= N-i; j-- ) {
                bw.write(" ");
            }
            for( int j = N; j-1 >= i; j-- ) {
                bw.write("*");
            }
            bw.write("\n");
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

다른 사람 풀이

BufferedReader + StringBuilder 클래스 사용

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class Main {
    public static void main(String[] args) throws Exception {
        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++) {
            int space = N * 2 - i * 2;
            for (int j = 1; j <= i; j++)
                sb.append('*');
            for (int j = 0; j < space; j++)
                sb.append(' ');
            for (int j = 1; j <= i; j++)
                sb.append('*');
            sb.append('\n');
        }
        for (int i = 1; i < N; i++) {
            int space = i * 2;
            for (int j = i; j < N; j++)
                sb.append('*');
            for (int j = 0; j < space; j++)
                sb.append(' ');
            for (int j = i; j < N; j++)
                sb.append('*');
            sb.append('\n');
        }
        System.out.println(sb);
    }
}

#2446

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

예제 입력 1

5

예제 출력 1

*********
 *******
  *****
   ***
    *
   ***
  *****
 *******
*********

풀이

BufferedReader + BufferdWriter 클래스 사용

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        for(int i = 1; i <= N; i++) {
            for(int j = 1; j <= i-1; j++) {
                bw.write(" ");
            }
            for(int j = N; j >= i; j--) {
                bw.write("*");
            }
            for(int j = N-1; j >= i; j--) {
                bw.write("*");
            }
            bw.write("\n");
        }
        for(int i = 2; i <= N; i++) {
            for(int j = N-1; j >= i; j--) {
                bw.write(" ");
            }
            for(int j = 1; j <= i-1; j++) {
                bw.write("*");
            }
            for(int j = 1; j <= i; j++) {
                bw.write("*");
            }
            bw.write("\n");
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

다른 사람 풀이

BufferedReader + StringBuilder 클래스 사용

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

public class Backjoon2446_Other{
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        StringBuilder sb1 = new StringBuilder();
        StringBuilder sb2 = new StringBuilder();
        for (int i = N + N - 1; i > 0; i--) {
            sb1.append('*');
        }
        for (int i = 1; i < N; i++) {
            sb2.append(sb1).append('\n');
            sb1.delete(sb1.length() - 2, sb1.length()).insert(0, ' ');
        }
        for (int i = 0; i < N; i++) {
            sb2.append(sb1).append('\n');
            sb1.delete(0, 1).append("**");
        }
        System.out.print(sb2.toString());
    }
}

#2522

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째줄에N(1 ≤ N ≤ 100)이주어진다.

출력

첫째줄부터 2×N-1번째줄까지차례대로별을출력한다.

예제 입력 1

3

예제 출력 1

  *
 **
***
 **
  *

풀이

BufferedReader + BufferdWriter 클래스 사용

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        for(int i = 1; i <= N; i++) {
            for(int j = N-1; j >= i; j--) {
                bw.write(" ");
            }
            for(int j = 1; j <= i; j++) {
                bw.write("*");
            }
            bw.write("\n");
        }
        for(int i = 1; i <= N; i++) {
            for(int j = 1; j <= i; j++) {
                bw.write(" ");
            }
            for(int j = N-1; j >= i; j--) {
                bw.write("*");
            }
            bw.write("\n");
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

다른 사람 풀이

BufferedReader + BufferdWriter 클래스 사용

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public 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 N = Integer.parseInt(br.readLine());
        for(int i=0; i<2*N-1; i++) {
            if(i < N) {
                for(int j=0; j<N-1-i; j++) {
                    bw.write(' ');
                }
                for(int j=0; j<i+1; j++) {
                    bw.write('*');
                }
            }
            else {
                for(int j=0; j<i-N+1; j++) {
                    bw.write(' ');
                }
                for(int j=0; j<2*N-1-i; j++) {
                    bw.write('*');
                }
            }
            bw.newLine();
        }
        br.close();
        bw.close();
    }
}

#10991

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

예제 입력 1

1

예제 출력 1

*

예제 입력 2

2

예제 출력 2

 *
* *

예제 입력 3

3

예제 출력 3

  *
 * *
* * *

풀이

BufferedReader + BufferdWriter 클래스 사용

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws NumberFormatException, IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        for(int i = 1; i <= N; i++) {
            for(int j = N-1; j >= i; j--) {
                bw.write(" ");
            }
            for(int j = 1; j <= i; j++) {
                bw.write("* ");
            }
            bw.newLine();
        }
        br.close();
        bw.flush();
        bw.close();
    }
}

다른 사람 풀이

BufferedReader + StringBuilder 클래스 사용

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

public class Main {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        int N = Integer.parseInt(br.readLine());
        System.out.print(star(N));
        br.close();
    }
    public static String star(int N) {
        StringBuilder sb = new StringBuilder();
        for(int i=1; i<=N; i++) {
            for(int j=1; j<=N-i; j++) {
                sb.append(' ');
            }
            for(int j=1; j<=2*i-1; j++) {
                if((j&1) == 1) { // 홀수
                    sb.append('*');
                }
                else { // 짝수
                    sb.append(' ');
                }
            }
            sb.append('\n');
        }
        return sb.toString();
    }
}

#10992

문제

예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

입력

첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.

출력

첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

예제 입력 1

1

예제 출력 1

*

예제 입력 2

2

예제 출력 2

 *
***

예제 입력 3

3

예제 출력 3

  *
 * *
*****

예제 입력 4

4

예제 출력 4

   *
  * *
 *   *
*******

다른 사람 풀이

BufferedReader + BufferedWriter 클래스 사용

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;

public class Main {
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        int N = Integer.parseInt(br.readLine());
        for (int i = N; i > 1; i--) {
            for (int j = 0; j < i - 1; j++) {
                bw.write(' ');
            }
            bw.write('*');
            if ((N - i) > 0) {
                for (int j = 0; j < 2 * (N - i) - 1; j++) {
                    bw.write(' ');
                }
                bw.write('*');
            }
            bw.newLine();
        }
        for (int i = 0; i < 2 * N - 1; i++) {
            bw.write('*');
        }
        br.close();
        bw.flush();
        bw.close();
    }
}
profile
시행착오, 문제해결 그 어디 즈음에.

0개의 댓글