자바/알고리즘 문제 풀이

백준/2439 별찍기2

backend dev 2022. 10. 28.

별 찍기 - 2

 
시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 128 MB 229513 128255 109425 56.296%

문제

첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제

하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.

입력

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

출력

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

예제 입력 1 복사

5

예제 출력 1 복사

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

 

 

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

 


다양한 방법으로 찍으면서 기초를 키워보자.

 

 

1. Arrays.fill을 이용해서 찍어보기

Arrays.fill을 이용하여 원하는 인덱스에 값을 채울 수 있다.

char형 변수의 값이 null인지 체크는 0과 비교하면된다( 아스키코드상 0이 null)

public static void main(String[] args) throws IOException {

        int input = Integer.parseInt(br.readLine());

        char[][] result = new char[input][input];


        for(int i=1;i<=input;i++)
        {
            Arrays.fill(result[i-1],input-i,input,'*'); //Arrays.fill을 이용하여 별을 찍어보자.
        }
        

        for(int i=0;i<input;i++)
        {
            for(int j =0;j<input;j++)
            {
                if(result[i][j] == 0) // 0을 이용해서 비교
                {
                    bw.write(" ");
                }
                else{
                    bw.write(result[i][j]);
                }

            }
            bw.newLine();
        }


        bw.flush();
        bw.close();
        

    }

2. 이중 반복문으로 찍기

public static void main(String[] args) throws IOException {

        int input = Integer.parseInt(br.readLine());

        char[][] result = new char[input][input];


        for(int i=0;i<input;i++)
        {
            for(int j=input-1 ;j>input-2-i; j--)
            {
                result[i][j] = '*';
            }
        }

        for(int i=0;i<input;i++)
        {
            for(int j =0;j<input;j++)
            {
                if(result[i][j] == 0) // 0을 이용해서 비교
                {
                    bw.write(" ");
                }
                else{
                    bw.write(result[i][j]);
                }

            }
            bw.newLine();
        }


        bw.flush();
        bw.close();


    }

3. 블로그 참조 더 깔끔한방법

 

for ( int i = 1 ; i <= N ; i++ ){
	for( int j = 1 ; j <= N-i ; j++ ) {
		print(" ");
	}
	for( int k = 1 ; k <= i ; k++ ){
		print("*");
	}
}

https://st-lab.tistory.com/36

 

[백준] 2439번 : 별 찍기 - 2 - JAVA [자바]

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

st-lab.tistory.com

 

'자바 > 알고리즘 문제 풀이' 카테고리의 다른 글

백준/2750 수 정렬하기  (0) 2022.12.03
백준/1439 뒤집기  (0) 2022.10.29
백준/2444 별찍기 -7  (0) 2022.10.28
백준/10974 모든 순열  (0) 2022.10.28
백준 - 3040/백설 공주와 일곱 난쟁이  (0) 2022.10.28

댓글