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