개발/알고리즘 기초

[알고리즘 기초] 숫자 사각형 만들기2

s2somang 2021. 3. 31. 06:26

 

문제

입력된 수 n만큼 n행 n열의 형태로 아래와 같이 출력되는 숫자 사각형 출력

 

-> 4 입력

 

 

🥺 풀이  : 

1번 문제가 까다로웠다. 그림까지 그려가며...풀어봣다.

1번을 풀고나니 뒤는 금방 풀수 있었다. 

 

1번
public class 숫자사각형2 {

	public static void main(String[] args) {
		
		int n = 4;
		int arr[][] = new int[n][n];
        
        for(int i =0; i<n; i++) {
						
			if(i % 2 ==0 ) { //짝수 
				for(int j =0; j<n; j++) {
					arr[i][j] = i * n + j + 1;
				}
			}
			else { //홀수
				for(int j =n-1; j>=0; j--) {
					arr[i][j] = i * n + n - j;
				}
			}
			
		}
		
		for(int i = 0; i<n;  i++) {
			for(int j =0; j<n; j++) {
				System.out.printf("%4d",arr[i][j]);
			}
			System.out.println();
		}
		
        
	}
	
}

2차원 배열을 사용하였고, 

1234  -- index[0]

8765  -- index[1]  

둘이 다르게 쌓이는걸 생각해서 홀수 짝수로 나눠 만들었다. 

 

2
public class 숫자사각형3 {

	public static void main(String[] args) {
				
		int n = 4; 
		int arr[][] = new int[n][n];
		int num =1;
		
		for(int i=0; i<n; i++) {
			for(int j =0; j<n; j++) {
				//arr[j][i] = num;
				//num++;
				arr[j][i] = i * n + j + 1;
			}	
		}
			
		for(int i=0; i<n; i++) {
			for(int j = 0; j<n; j++) {
				System.out.printf("%4d",arr[i][j]);
			}
			System.out.println();
		}
		
		
	}
}

두가지 방법이 있었다. 

행과 열이 바뀐것으로 i와 j를 바꿔서 넣어줬다. 

처음 푼 방법음 num이라는 변수를 따로 두어 1씩 증가시키는 것이였다. 

두번째 방법은 1번문제의 짝수 인덱스 구하는 것과 같다. 

 

 

3
public class 숫자사각형4 {

	public static void main(String[] args) {

		int n = 4;
		int arr[][]= new int[n][n];
	
		for(int i = 0; i<n; i++) {
			for(int j =0; j< n; j++) {
				arr[i][j] = (j + 1) *(i + 1) ;
			}
		}
		
		for(int i = 0; i<n; i++) {
			for(int j =0; j< n; j++) {
				System.out.printf("%4d",arr[i][j]);
			}
			System.out.println();
		}

	}
}