Problem Solving

[Java] Requirements Q049~: 별찍기 모음

Isaac S. Lee 2023. 7. 28. 14:14
package com.test.question;

import java.util.Scanner;

public class Q049 {
	public static void main(String[] args) {
		/*
		● 요구사항
		아래와 같이 출력하시오.
		
		● 조건
		- 행의 갯수를 입력받으시오.
		
		● 입력 1
		행: 5 
		
		● 출력 1
		*****
		 ****
		  ***
		   **
		    *
		
		● 입력 2
		행: 5 
		
		● 출력 2
		*******
		 ******
		  *****
		   ****
		    ***
		     **
		      *

		*/
		
		Scanner scan = new Scanner(System.in);
		
		int num; // 행의 개수
		
		// 행의 개수 입력
		System.out.printf("행: ");
		num = scan.nextInt();
		
		// 출력
		for (int i = 0; i < num; i++) {
			// ' ' 출력
			for (int j = num; j < num + i; j++) {
				System.out.printf(" ");
			}
			
			// '*' 출력
			for (int k = num - i; k > 0; k--) {
				System.out.printf("*");
			}
			
			System.out.println(); // 개행
		}
		
		scan.close();
	}
}
package com.test.question;

import java.util.Scanner;

public class Q050 {
	public static void main(String[] args) {
		/*
		● 요구사항
		아래와 같이 출력하시오.
		
		● 조건
		- 행의 갯수를 입력받으시오.
		
		● 입력
		행: 5 
		
		● 출력
		    *
		   **
		  ***
		 ****
		*****
		*/
		
		Scanner scan = new Scanner(System.in);
		
		int num; // 행의 개수
		
		// 행의 개수 입력
		System.out.printf("행: ");
		num = scan.nextInt();
		
		// 출력
		for (int i = 0; i < num; i++) {
			// ' ' 출력
			for (int j = num - i; j > 0; j--) {
				System.out.printf(" ");
			}
			
			// '*' 출력
			for (int k = 0; k <= i; k++) {
				System.out.printf("*");
			}
			
			System.out.println(); // 개행
		}
		
		scan.close();
	}
}
package com.test.question;

import java.util.Scanner;

public class Q051 {
	public static void main(String[] args) {
		/*
		● 요구사항
		아래와 같이 출력하시오.
		
		● 조건
		- 행의 갯수를 입력받으시오.
		
		● 입력 1
		행: 5 
		
		● 출력 1
		    *
		   ***
		  *****
		 *******
		*********	
		
		● 입력 2
		행: 7 
		
		● 출력 2
		      *
		     ***
		    *****
		   *******
		  *********
		 ***********
		*************
		*/
		
		Scanner scan = new Scanner(System.in);
		
		int num; // 행의 개수
		
		// 행의 개수 입력
		System.out.printf("행: ");
		num = scan.nextInt();
		
		// 출력
		for (int i = 0; i < num; i++) {
			// ' ' 출력
			for (int j = num - i; j > 0; j--) {
				System.out.printf(" ");
			}
			
			// '*' 출력
			for (int k = 0; k < i * 2 + 1; k++) {
				System.out.printf("*");
			}
			// (조건) k <= i -> k < 1 + i
			
			System.out.println(); // 개행
		}
		
		scan.close();
	}
}
package com.test.question;

import java.util.Scanner;

public class Q052 {
	public static void main(String[] args) {
		/*
		● 요구사항
		아래와 같이 출력하시오.
		
		● 조건
		- 행의 갯수를 입력받으시오.
		
		● 입력
		행: 5 
		
		● 출력
		    aa
		   abba
		  abccba
		 abcddbca
		abcdeedcba
		
		● 입력
		행: 7
		
		● 출력
		      aa
		     abba
		    abccba
		   abcddbca
		  abcdeedcba
		 abcdeffedcba
		abcdefggfedcba
		
		// 실행 예시
		입력(num): 3
		
		i: 1	k: 0			1
		Unicode:   97       	97
		i: 2	k: 0  1			2  3
		Unicode:   97 98    	98 97
		i: 3	k: 0  1  2		3  4  5
		Unicode:   97 98 99 	99 98 97
		*/
		
		Scanner scan = new Scanner(System.in);
		
		int num; // 행의 개수
		int stac = 0; // 순서
		
		// 행의 개수 입력
		System.out.printf("행: ");
		num = scan.nextInt();
		
		// 출력
		for (int i = 1; i <= num; i++) {
			// stac 초기화
			stac = 0;
			
			// ' ' 출력
			for (int j = num - i; j > 0; j--) {
				System.out.printf(" ");
			}
			
			// 'abc..' 출력
			for (int k = 0; k < i * 2; k++) {
				if (k - i < 0) {
					System.out.printf("%c", 'a' + stac);
					stac++;
					// stac++를 출력 뒤에 하는 이유는 a + 1 = b가 되기 때문이다.
				}
				else {
					stac--;
					System.out.printf("%c", 'a' + stac);
					// stac--를 출력 앞에 하는 이유는 이미 stac에 1 이상이 있는 상태이므로 a + 1 = b가 되어있기 때문이다.
					// 따라서 먼저 stac을 감소시켜 b - 1 = a를 함으로써 올바른 출력이 된다.
				}
			}

			System.out.println(); // 개행
		}
		
		scan.close();
	}
}