정리하고기록하자

백준 (JAVA) - 별찍기 - 2 (2349) 본문

백준 - 알고리즘

백준 (JAVA) - 별찍기 - 2 (2349)

정리하고기록하자 2021. 11. 8. 22:51
반응형

백준 - 알고리즘 for문 별찍기 - 2 (2349) 문제

 

문제 :

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

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


먼저 입력한 숫자 만큼 반복문을 돌려야 한다.

 

Scanner sc = new Scanner(System.in);
int a = sc.nextInt();		

for (int i = 1; i <= a; i++) {
			
}

 

첫번째 출력문을 보면

오른쪽에 * 1개 가 있다. 그럼 빈공간이 4개가 있어야 하고 * 은 1개가 있어야 한다.

그렇다면 첫번째 줄에는 입력한 숫자에서 1을 빼서 공백을 만들어야 한다.

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

첫번째 반복문에서 i 가 1이고 i <= 5 이므로

두번째 반복문에선 j 가 1이고 j <= 5 - 1 이므로

첫번째 출력문에 4개의 공백이 생긴다.


마지막으로 * 을 찍어야 하는데

for ( int t = 1 ; t <= i; t++){
	print("*");
}

마지막으로 t 가 1 이고 t <= 5 이므로 조건이 성립되면 * 을 찍는다.


import java.util.Scanner;
 
public class Main {
 
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		int a = in.nextInt();
 
		for (int i = 1; i <= a; i++) { // 입력한 값의 반복문
			for (int j = 1; j <= a - i; j++) { // 공백을 찍기 위한 반복문
				System.out.print(" ");
			}
			for (int k = 0; k < i; k++) { // * 을 찍기 위한 반복문
				System.out.print("*");
			}
			System.out.println(); // 마지막으로 줄바꿈!
		}
	}
}

앞에 풀었던 별찍기 - 1 과 비슷하지만 

공백을 찍어야 하는 반복문을 하나 더 추가 해서 출력해야 한다.

반응형