✅ 문제

정수 N을 입력 받아 N * N 배열에 다음과 같이 숫자를 저장하고 출력하시오.
✅ 코드
import java.util.Scanner;
public class SnakePatternArray {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Enter the value of N: ");
int N = scanner.nextInt();
int[][] array = new int[N][N];
int num = 1;
for (int i = 0; i < N; i++) {
if (i % 2 == 0) {
// 홀수 번째 행 (0부터 시작): 왼쪽에서 오른쪽으로 채우기
for (int j = 0; j < N; j++) {
array[i][j] = num++;
}
} else {
// 짝수 번째 행: 오른쪽에서 왼쪽으로 채우기
for (int j = N - 1; j >= 0; j--) {
array[i][j] = num++;
}
}
}
// 배열 출력
for (int i = 0; i < N; i++) {
for (int j = 0; j < N; j++) {
System.out.print(array[i][j] + " ");
}
System.out.println();
}
scanner.close();
}
}
✅ 추론 과정
[0][0]
1[0][1]
2[0][2]
3[0][3]
4[0][4]
5[1][0]
6[1][1]
7[1][2]
8[1][3]
9[1][4]
10[2][0]
11[2][1]
12[2][2]
13[2][3]
14[2][4]
15[3][0]
16[3][1]
17[3][2]
18[3][3]
19[3][4]
20[4][0]
21[4][1]
22[4][2]
23[4][3]
24[4][4]
25
일단 정수형 변수 number 을 선언해주고 값을 1로 초기화 시킨다
이제 number 을 1씩 증가시켜가며 이중 for문을 돌려 줄 건데 초보자들은 이런 문제를 풀 때는
인덱스 번호를 나열해보고 x와 y사이의 규칙을 찾아보는 것이 좋다.
숫자가 1 2 3 4 5 로 변하는 동안 행은 0인데 열은 0, 1, 2, 3, 4로 변한다.
그럼 바깥포문의 i가 행이 되고 안쪽 포문의 j가 열이 되므로 number을 1씩 증가해주며
행렬에 [i][j] 그대로 대입해주면 된다.

'Algorithm > JavaFestival' 카테고리의 다른 글
[자바페스티벌] 16번 - 8자리 정수 입력받아 정수의 합 구하기 (반복문 활용) (0) | 2024.03.25 |
---|---|
[자바페스티벌] 15번 - 1, 2, 4, 7, 11 과 같은 수열의 n번째 항까지 출력하기 (0) | 2024.03.25 |
[자바페스티벌] 13번 - 문자열로 선언된 성적 별 학생수 출력하기 (0) | 2024.03.25 |
[자바페스티벌] 12번 - 2차원배열에 숫자 저장하기 (0) | 2024.03.25 |
[자바페스티벌] 11번 - 앞의 정수가 뒤의 정수로 나누어지는지 판별하는 메소드 만들기 (0) | 2024.03.25 |
✅ 문제

정수 N을 입력 받아 N * N 배열에 다음과 같이 숫자를 저장하고 출력하시오.
✅ 코드
import java.util.Scanner; public class SnakePatternArray { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.print("Enter the value of N: "); int N = scanner.nextInt(); int[][] array = new int[N][N]; int num = 1; for (int i = 0; i < N; i++) { if (i % 2 == 0) { // 홀수 번째 행 (0부터 시작): 왼쪽에서 오른쪽으로 채우기 for (int j = 0; j < N; j++) { array[i][j] = num++; } } else { // 짝수 번째 행: 오른쪽에서 왼쪽으로 채우기 for (int j = N - 1; j >= 0; j--) { array[i][j] = num++; } } } // 배열 출력 for (int i = 0; i < N; i++) { for (int j = 0; j < N; j++) { System.out.print(array[i][j] + " "); } System.out.println(); } scanner.close(); } }
✅ 추론 과정
[0][0]
1[0][1]
2[0][2]
3[0][3]
4[0][4]
5[1][0]
6[1][1]
7[1][2]
8[1][3]
9[1][4]
10[2][0]
11[2][1]
12[2][2]
13[2][3]
14[2][4]
15[3][0]
16[3][1]
17[3][2]
18[3][3]
19[3][4]
20[4][0]
21[4][1]
22[4][2]
23[4][3]
24[4][4]
25
일단 정수형 변수 number 을 선언해주고 값을 1로 초기화 시킨다
이제 number 을 1씩 증가시켜가며 이중 for문을 돌려 줄 건데 초보자들은 이런 문제를 풀 때는
인덱스 번호를 나열해보고 x와 y사이의 규칙을 찾아보는 것이 좋다.
숫자가 1 2 3 4 5 로 변하는 동안 행은 0인데 열은 0, 1, 2, 3, 4로 변한다.
그럼 바깥포문의 i가 행이 되고 안쪽 포문의 j가 열이 되므로 number을 1씩 증가해주며
행렬에 [i][j] 그대로 대입해주면 된다.

'Algorithm > JavaFestival' 카테고리의 다른 글
[자바페스티벌] 16번 - 8자리 정수 입력받아 정수의 합 구하기 (반복문 활용) (0) | 2024.03.25 |
---|---|
[자바페스티벌] 15번 - 1, 2, 4, 7, 11 과 같은 수열의 n번째 항까지 출력하기 (0) | 2024.03.25 |
[자바페스티벌] 13번 - 문자열로 선언된 성적 별 학생수 출력하기 (0) | 2024.03.25 |
[자바페스티벌] 12번 - 2차원배열에 숫자 저장하기 (0) | 2024.03.25 |
[자바페스티벌] 11번 - 앞의 정수가 뒤의 정수로 나누어지는지 판별하는 메소드 만들기 (0) | 2024.03.25 |