컴공댕이 공부일지

[ java ] 코드업 (1476 2차원 배열 빗금 채우기 3-1) 본문

문제 풀이/코딩 문제 풀이 모음

[ java ] 코드업 (1476 2차원 배열 빗금 채우기 3-1)

은솜솜솜 2023. 6. 10. 23:10
728x90

1476 : [기초-배열연습] 2차원 배열 빗금 채우기 3-1

 

https://www.codeup.kr/problem.php?id=1476&rid=0 

 

[기초-배열연습] 2차원 배열 빗금 채우기 3-1

다음과 같은 n*m 배열 구조를 출력해보자. 입력이 3 4인 경우 다음과 같이 출력한다. 1 3 6 9 2 5 8 11 4 7 10 12 입력이 4 5인 경우는 다음과 같이 출력한다. 1 3 6 10 14 2 5 9 13 17 4 8 12 16 19 7 11 15 18 20 입력이

www.codeup.kr

 

 

(정답 코드)

import java.util.Scanner;

public class 빗금채우기이 {

	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);
		
		int x=s.nextInt();
		int y=s.nextInt();
		
		int [][] a = new int [x][y];
		
		int n=x+y-2;
		
		int t=0;
		int num=1;
		
		
		while(t<=n) {
			
			for(int i=0; i<y; i++) {
				for(int j=0; j<x; j++) {
					if(i+j==t) {
						a[j][i]=num;
						num++;
						continue;
					}
				}
			}
			
			t++;
		}
		
		for(int i=0; i<x; i++) {
			for(int j=0; j<y; j++) {
				System.out.print(a[i][j]+" ");
			}
			System.out.println();
		}
		
		
		
	}

}

 

 

📖 풀이 요약

간단한 2차원 배열 활용 문제이다 !

 

 

빗금 순서대로 채우게되면, 각 대각선 줄마다 행과 열을 합한 값이 같다!

 

예시)

3행 4열의 경우,

1  3  6  9
2  5  8  11
4  7 10 12

 

1은 0행 0열 => 합이 0

2,3은 1,0 / 0,1 => 합이 1

4,5,6은 2,0 / 1,1 / 0,2 => 합이 2

7,8,9는 2,1 / 1,2 / 0,3 => 합이 3

10,11은 2,2 / 1,3 => 합이 4

12는 2행 3열 => 합이 5

 

이중 for 반복문을 써서 행열의 합을 비교해서, 그 자리에 자연수를 채워넣으면 된다! :) 

728x90
Comments