컴공댕이 공부일지
[ java ] 코드업 (1476 2차원 배열 빗금 채우기 3-1) 본문
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
'문제 풀이 > 코딩 문제 풀이 모음' 카테고리의 다른 글
[ C++/cpp ] 백준 (11650 좌표 정렬하기) ⭐정렬, 비교함수 (0) | 2024.02.29 |
---|---|
[ C++/cpp ] 백준 (15685 드래곤 커브) ⭐구현, 시뮬레이션 (56) | 2023.11.24 |
[ java ] 백준 (2798 블랙잭) (0) | 2023.05.22 |
[ java ] 백준 (7568 덩치) (3) | 2023.05.22 |
[ java ] 백준 ( 2231 분해합 ) (0) | 2023.05.11 |
Comments