배열을 선언한 뒤 풀어야 하는 arr3문제이다.
핵심
이중 배열을 선언하여, 위치를 나타낸다. 처음에 풀 때는 첫 번째 줄에 배열의 값을 저장한 뒤, 이후 나머지 줄의 배열을 규칙적으로 대입해주었는데, 더욱 쉬운 방법이 있다.
정답 코드
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[105][105];
int x,y;
int count=1;
for (int i=0;i<n;i++){
y=0;
x=i;
for (int j=0;j<=i;j++){
arr[y][x] = count;
count++;
y++;
x--;
}
}
for (int i=0;i<n;i++){
for (int j=0;j<n-i;j++){
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
}
해설
n의 값이 100 이하이기 때문에, 적당하게 105의 크기인 이중 배열을 선언하였다.
출력 값을 보면
1 2 4 7
3 5 8
6 9
10
대각선으로 수가 증가하게 된다.i값은 시작점을 나타내고, j값은 숫자를 직접 넣는 것의 개수만큼 반복한다.1부터 n까지 직접 우리가 설계한 위치에 대입하는 것이다.
큰 설명 필요 없이, 직접 동작 과정을 떠올려보면 쉽게 이해가 된다.
개선점이나 오류가 있다면, 댓글 부탁드립니다.
'PS > 알고리즘 문제풀이' 카테고리의 다른 글
*완전 탐색* rook(java,알고리즘) (2) | 2022.09.11 |
---|---|
[백준]1213번 팰린드롬 만들기(java) (0) | 2022.09.10 |
*다중 반복문* 숫자 피라미드(java, 알고리즘) (0) | 2022.09.04 |
[백준]1302번 베스트셀러(java) (0) | 2022.09.04 |
[백준] 1026번 보물(java) (0) | 2022.08.31 |