반응형
문제
삼각형의 높이 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
반응형
'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 |