본문 바로가기

Android

[Android] Java(자바) 2차원 배열 좌측으로 90도, 180도, 270도 회전(돌리기)

package com.example.arrayspintest;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;

public class MainActivity extends AppCompatActivity {

    int [][] before = {{1,2,3,4,5}, {6,7,8,9,10}, {11,12,13,14,15}}; // 5x3 배열
    int [][] after = {{0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}, {0,0,0}}; // 3x5 배열
    int [][] after_2 = {{0,0,0,0,0}, {0,0,0,0,0}, {0,0,0,0,0}}; // 5x3 배열

    int width = 5 - 1; // 배열 index는 0부터 시작이기 때문에 -1
    int height = 3 - 1; // 배열 index는 0부터 시작이기 때문에 -1

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 좌측으로 90도 회전
        for(int i = 0; i <= width; i++){
            for(int j = 0; j <= height; j++){
                after[i][j] = before[j][width-i];
            }
        }

        // 좌측으로 180도 회전
        for(int i = 0; i <= height; i++){
            for(int j = 0; j <= width; j++){
                after_2[i][j] = before[height-i][width-j];
            }
        }

        // 좌측으로 270도 회전
        for(int i = 0; i <= width; i++){
            for(int j = 0; j <= height; j++){
                after[i][j] = before[height-j][i];
            }
        }
    }
}