Algorithm/문제 풀이 / / 2020. 1. 25. 18:42

[JUNGOL_1337 - JAVA] 달팽이삼각형

반응형

문제

삼각형의 높이 N을 입력받아서 아래와 같이 숫자 0부터 달팽이 모양으로 차례대로 채워진 삼각형을 출력하는 프로그램을 작성하시오.

 

< 처리조건 >
왼쪽 위부터 시계방향으로 오른쪽 아래로 이동하면서 숫자 0부터 N개를 채우고 

다시 왼쪽으로, 다음은 위쪽으로 반복하면서 채워 나간다. (숫자 9 다음에는 0부터 다시 시작한다.)

 

 

 

 

입력형식

삼각형의 한변의 길이 N(N의 범위는 100 이하의 양의 정수)을 입력받는다.

 

출력형식

주어진 형태대로 높이가 N인 달팽이 삼각형을 출력한다. 숫자 사이는 한 개의 공백으로 구분한다.

 

 

import java.util.Scanner;

public class Snail_Triangle {

	public static void main(String[] args) {

		Scanner sc = new Scanner(System.in);
		int N = sc.nextInt(); // 삼각형의 높이
		int arr[][] = new int[N][N]; // 입력받은 크기의 배열 생성
		int x = -1, y = -1; // arr[0][0]에 넣기 위해 '-1'로 초기화
		int num = 0; // 출력할 수

		for (int i = 0; i < N; ++i) {
			for (int j = i; j < N; ++j) {
				if (i % 3 == 0) { // 대각선, 밑변, 높이 순서대로 이동하는 규칙을 활용
					x++; // x,y의 각각 증가를 통한 대각선 이동
					y++;
				} else if (i % 3 == 1) { // y 감소를 통한 밑변에서의 이동
					y--;
				} else if (i % 3 == 2) { // x 감소를 통한 높이에서의 이동
					x--;
				}
				arr[x][y] = (num++) % 10; // 10초과시 1의 자리만 출력

				// System.out.println("arr["+x+"]"+"["+y+"] = "+arr[x][y]); 확인을 위한 코드
			} // end of in_for

		} // end of out_for

		// 출력
		for (int i = 0; i < N; i++) {
			for (int j = 0; j <= i; ++j) { // 대각선 기준 좌하단만 출력
				System.out.print(arr[i][j] + " ");
			}
			System.out.println();
		}
	}

}

 

 

http://www.jungol.co.kr/bbs/board.php?bo_table=pbank&wr_id=609&sca=2020

 

JUNGOL | 달팽이삼각형 > 문제은행

삼각형의 높이 N을 입력받아서 아래와 같이 숫자 0부터 달팽이 모양으로 차례대로 채워진 삼각형을 출력하는 프로그램을 작성하시오. < 처리조건 > 왼쪽 위부터 시계방향으로 오른쪽 아래로 이동하면서 숫자 0부터 N개를 채우고  다시 왼쪽으로, 다음은 위쪽으로 반복하면서 채워 나간다. (숫자 9 다음에는 0부터 다시 시작한다.) 삼각형의 한변의 길이 N(N의 범위는 100 이하의 양의 정수)을 입력받는다. 주어진 형태대로 높이가 N인 달팽이 삼각형을 출력한다.

www.jungol.co.kr

 

반응형

'Algorithm > 문제 풀이' 카테고리의 다른 글

[JUNGOL_2813 - JAVA] 소수의 개수  (0) 2020.01.25
[JUNGOL_2809 - JAVA] 약수  (0) 2020.01.25
[JUNGOL_1307 - JAVA] 문자사각형1  (0) 2020.01.25
[JUNGOL_1303 - JAVA] 숫자사각형1  (0) 2020.01.25
[JUNGOL_1341 - JAVA ] 구구단2  (0) 2020.01.25
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유