hye-log

[정올]1719번 별삼각형2(JAVA) 본문

CodingTest/Jungol

[정올]1719번 별삼각형2(JAVA)

iihye_ 2023. 7. 29. 18:16

0. 문제 링크

https://www.jungol.co.kr/problem/1719

 

JUNGOL

history 최근 본 문제

www.jungol.co.kr

 

1. 문제 설명

1) 다음과 같은 삼각형 형태로 출력하기

 

2. 입출력

// input
5 1

// output
*
**
***
**
*

 

3. 코드

import java.util.*;

public class jol1719 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		int n = sc.nextInt(); // 삼각형의 높이
		int m = sc.nextInt(); // 삼각형의 종류
		if(!(n > 0 && n <= 100 && n % 2 == 1 && m >= 1 && m <= 4)) {
			System.out.println("INPUT ERROR!");
			return;
		}
		
		int t, left, right;
		
		switch(m) { 
		case 1: // 왼쪽에서 오른쪽으로 차례로 감소
			t = 1;
			for(int i = 0; i < n; i++) {
				if(i < (n / 2)) { // 윗줄
					for(int j = 0; j < t; j++) {
						System.out.print("*");
					}
					t++;
				} else { // 아랫줄
					for(int j = 0; j < t; j++) {
						System.out.print("*");
					}
					t--;
				}
				System.out.println();
			}
			break;
		case 2: // 오른쪽에서 왼쪽으로 차례로 감소
			t = n / 2;
			for(int i = 0; i < n; i++) {
				if(i < (n / 2)) { // 윗줄
					for(int j = 0; j < t; j++) {
						System.out.print(" ");
					}
					for(int j = t; j < (n / 2 + 1); j++) {
						System.out.print("*");
					}
					t--;					
				} else { // 아랫줄
					for(int j = 0; j < t; j++) {
						System.out.print(" ");
					}
					for(int j = t; j < (n / 2 + 1); j++) {
						System.out.print("*");
					}
					t++;
				}
				System.out.println();
			}
			break;
		case 3: // 위에서 아래로 감소하다가 다시 증가
			t = n / 2;
			left = 0;
			right = n;
			for(int i = 0; i < n; i++) {
				if(i < (n / 2)) { // 윗줄
					for(int j = 0; j < n; j++) {
						if(j >= left && j < right) {
							System.out.print("*");
						} else {
							System.out.print(" ");
						}
					}
					left++;
					right--;
				} else { // 아랫줄
					for(int j = 0; j < n; j++) {
						if(j >= left && j < right) {
							System.out.print("*");
						} else {
							System.out.print(" ");
						}
					}
					left--;
					right++;
				}
				System.out.println();
			}
			break;
		case 4: // 대각선으로 감소하면서 다시 증가
			t = n / 2;
			left = 0;
			right = t + 1;
			for(int i = 0; i < n; i++) {
				if(i < (n / 2)) { // 윗줄
					for(int j = 0; j < n; j++) {
						if(j >= left && j < right) {
							System.out.print("*");
						} else {
							System.out.print(" ");
						}
					}
					left++;
				} else { // 아랫줄
					for(int j = 0; j < n; j++) {
						if(j >= left && j < right) {
							System.out.print("*");
						} else {
							System.out.print(" ");
						}
					}
					right++;
				}
				System.out.println();
			}
			break;
		}
	}
}

 

실행 결과

 

4. 회고

1) left, right 변수를 선언하여 출력을 조절함

 

5. Github

https://github.com/iihye/Algorithm/blob/main/Jungol/jol1719.java

728x90

'CodingTest > Jungol' 카테고리의 다른 글

[정올]1707번 달팽이사각형(JAVA)  (0) 2023.07.29
[정올]1329번 별삼각형3(JAVA)  (0) 2023.07.29
[정올]1523번 별삼각형1(JAVA)  (0) 2023.07.29
Comments