loading

알고리즘/알고리즘JAVA

[백준알고리즘/JAVA/for문] 2439번 문제 : 별 찍기 - 2

침착곰 2021. 4. 22. 17:49
반응형

안녕하세요

백준 알고리즘 단계별로 풀어보기 3단계 2439번 문제 별 찍기 - 2를 풀어봤습니다

별 찍기 - 1은 쉽게 풀었지만 이 문제는 약간 난이도가 있어서 시간이 조금 걸려서 풀었습니다

www.acmicpc.net/problem/2439

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

 

문제

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

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

 

입력

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

 

출력

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

 

 

 

1. 문제 풀이

 처음에 구현한 방식입니다

 이중for문을 쓰기싫어서 약간 어거지로 구현한 소스코드입니다;;;

 구현하는 중에는 몰랐는데 구현하고 나니 약간 지저분한 느낌이 있는 것 같습니다

 어쨋든 결과를 돌리니 정답은 맞췄습니다 하지만 속도는... ㅠㅠ

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));
		String n = br.readLine();
		int length = Integer.parseInt(n);
		String Star = "";
		String Space = "";
		
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		// 반복문을 사용해서 스페이스를 찍는다
		for(int i = 0; i < length - 1; i++)
		{
			Space = Space + " ";
		}
		
		// 반복문을 사용해서 *을 추가한다
		for(int i = 0; i < length; i++)
		{
			Star = Star + "*";			
			bw.write(Space + Star + "\n");
			
			// 공백을 하나씩 제거한다 -> 마지막 공간은 제거하지 않는다
			if(Space.length() != 0)
				Space = Space.substring(1);
		}

		// 값 출력
		bw.flush();
		bw.close();
		br.close();
	}
}

 

2. 문제 풀이

 이번에는 이중for문을 사용해서 구현하였습니다

 보통의 정석적인 방식으로 별 찍기를 해봤습니다

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));
        StringBuilder sb = new StringBuilder();
        int n = Integer.parseInt(br.readLine());

		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

		// 반복문 안에 반복문을 넣어서 공백과 별을 찍어줍니다
        for (int i = 1; i <= n; i++) {
            for (int j = n-i; j >0 ; j--) {
            	bw.write(" ");
            }
            for (int j = 1; j <= i; j++) {
            	bw.write("*");
            }
            bw.write("\n");
        }
        
		// 값 출력
		bw.flush();
		bw.close();
		br.close();
	}
}

 

여기까지 백준알고리즘의 2439번 문제 별 찍기 - 2를 풀은 내용이었습니다

알고리즘을 푸는데 참고가 되셨으면 좋겠습니다

 

다음 문제 : 2021.04.23 - [알고리즘/알고리즘JAVA] - [백준알고리즘/JAVA/for문] 10871번 문제 : X보다 작은 수

이전 문제 : 2021.04.22 - [알고리즘/알고리즘JAVA] - [백준알고리즘/JAVA/for문] 2438번 문제 : 별 찍기 - 1

반응형
그리드형