공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

 

 

 

 


배열 회전

 

 

주어진 배열을 시계방향으로 90도 회전시켜서 출력하는 프로그램이다. 먼저 위의 그림을 보면 변경된 배열의 크기는 행과 열의 크기가 서로 바뀌어 있는 것을 확인할 수 있다.  i (행)를 변경 전의 열의 크기로 한 다음  j (열)는 행의 크기부터 하나씩 줄여나가면 각각의 배열에 순서대로 담을 수 있다. 담을 때가 문제인데  j 가 줄어드는 바람에 일괄로 처리할 수가 없어서  a 라는 변수를 만들어 하나씩 증가하면서 배열에 담도록 했다.

 

 

실행결과


 

 arrA 의 배열을 바꿔도 정상 동작하는 것을 확인할 수 있다.

package Example;

public class Example {
	public static void main(String[] args) {
		
		//원본 배열
		String[][] arrA = {
				    {"*", "*", "*", " ", " "},
				    {"*", "*", "*", " ", " "},
				    {"*", "*", "*", "*", "*"},
				    {"*", "*", "*", "*", "*"},
			      };
		
		//회전할 배열 선언및 초기화(90도 회전하면 행과 열의 개수가 바뀌므로 개수를 바꿔서 생성한다)
		String[][] arrB = new String[arrA[0].length][arrA.length];
		
		for(int i = 0 ; i < arrA[0].length ; i++) {
			int a = 0 ;
			
			for(int j = arrA.length - 1 ; j >= 0 ; j-- ) {
				arrB[i][a] = arrA[j][i];
				a++;
			}
		}
		
		//결과물을 출력하기 위한 코드
		System.out.println("=== 회전하기 전 arrA ===");
		for(int i = 0 ; i < arrA.length ; i++) {
			for(int j = 0 ; j < arrA[0].length ; j++) {
				System.out.print(arrA[i][j]);
			}
			System.out.println();
		}
		
		System.out.println("\n=== arrA을 오른쪽으로 90도 회전한 arrB ===");
		for(int i = 0 ; i < arrB.length ; i++) {
			for(int j = 0 ; j < arrB[0].length ; j++) {
				System.out.print(arrB[i][j]);
			}
			System.out.println();
		}
	}
}
	

'Back end > Java 문제' 카테고리의 다른 글

[Java] ArrayList 구현  (0) 2019.07.18
[Java] 빙고게임  (0) 2019.07.08
[Java] 빈도수 구하기  (0) 2019.07.05
[Java] 배열 정렬(sort)  (0) 2019.07.03
[Java] 총합, 평균, 최대, 최소  (0) 2019.06.26

+ Recent posts