공부하기/백준

[Java] 백준 풀기 2439 - 별 찍기 2

XEV 2023. 1. 24. 10:48

자바 백준 2439번

브론즈 4

https://www.acmicpc.net/problem/2439

 

2439번: 별 찍기 - 2

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

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 구현

 

 

 

 

 

문제 풀기

재귀 함수를 구현하여 별을 찍어 본다.

 

https://xcevor.tistory.com/223

 

[Java] 백준 풀기 2438 - 별찍기 1

자바 백준 2438번 브론즈 5 https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 문제 보기 분류: 구현 문제 풀기 재

xcevor.tistory.com

순차적으로 늘어나는 별들이 오른쪽 정렬되어 있는 모습을 바로 이전 별 찍기 1 의 연장선에서 구현을 위해서 String 초기값을 입력된 숫자의 크기만큼 함수 .repeat() 을 사용하여 " " 빈 공간으로 할당한다.

재귀 함수를 돌 때마다 오른쪽 정렬된 별의 개수를 늘려주기 위해서 맨 앞의 빈 " " 을 하나 제거한 후 맨 뒤에 "*" 를 추가한다.

입력된 숫자와 count 가 같아졌을 때 return 한다.

 

 

 

 

 

코드 보기

import java.util.Scanner;

public class Main {
    
    public static Scanner sc = new Scanner(System.in);
		
	static int numStar = sc.nextInt();


	public static void main(String[] args) {
		
		int count = 0;
		String star = " ".repeat(numStar); // 입력된 숫자만큼 빈 공간을 초기값으로 설정.
		
		fnRecursiveStar(count, star);
		
	}
	
	
	public static void fnRecursiveStar(int count, String star) {
	    
	    if (numStar == count) {
	        return;
	    }
	    
	    star = star.substring(1) + "*"; // 맨 앞 한자리를 지우기 위해 .substring(int) 을 이용하여 index 1 부터 마지막까지 가져온 후 "*" 를 맨 뒤에 추가.
	    System.out.println(star);
	    
	    fnRecursiveStar(count + 1, star);
	    
	}


}



/*

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

*/