Algorithm/JUNGOL

[정올] 1337 : 달팽이삼각형

Gyuri 2022. 1. 29. 20:28

문제

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

< 처리조건 > 

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

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

입력형식

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

출력형식

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

입력 예

6

출력 예

0
4 1
3 5 2
2 0 6 3
1 9 8 7 4
0 9 8 7 6 5
 

코드

import java.util.Scanner;

public class Main {
    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;
        int y = -1;

        int k = 0;
        for (int i = 0; i < n; i++) { // 0 1 2 3 4 5
            for (int j = i; j < n; j++) {
                if (i % 3 == 0) { // 0 3
                    x++;
                    y++;
                }

                if (i % 3 == 1) { // 1 4
                    x--;
                }

                if (i % 3 == 2) { // 2 5
                    y--;
                }
                
                arr[x][y] = (k++) % 10;
            }
        }

        for (int i = 0; i < n; i++) { // 0 1 2 3 4 5                                                                               
            for (int j = 0; j <= i; j++) { 
                System.out.print(arr[j][i] + " ");
            }
            System.out.println();
        }
    }
}

▷ 어떻게 접근해야 할 지 감이 안와서 구글링을 해보면서 풀었는데, 결과값을 int형이 아닌 문자형으로 선언한 후, 하나씩 charAt으로 꺼내서 비교해주면 된다.

 

▶ char - '0' 하면 숫자로 인식! 따라서 result.charAt(i)으로 하나씩 꺼내고 -'0'을 해주면 숫자로 인식하게 돼서 해당 숫자의 개수를 +1 해줌

'Algorithm > JUNGOL' 카테고리의 다른 글

[정올] 1641 : 숫자삼각형  (0) 2022.01.22
[정올] 1329 : 별삼각형3  (0) 2022.01.21
[정올] 1719 : 별삼각형2 (*)  (0) 2022.01.21
[정올] 1523 : 별삼각형1  (0) 2022.01.20
[정올] 1002 : 최대공약수, 최소공배수  (0) 2022.01.20