beepbeep

LeetCode 48번 - Lotate Image 본문

코딩테스트 연습/기타

LeetCode 48번 - Lotate Image

삑삑도요 2023. 3. 16. 12:51

문제

2차원 배열이 주어집니다. 주어진 2차원 배열을 시계방향으로 90도 회전시키세요.

 

단, 2차원 배열을 새로 만들지 않고 주어진 2차원 배열만 이용해서 회전시켜야 합니다.

 


살펴보기

2단계로 나누어서 풀 수 있습니다.

 

1단계

가상의 우하향 대각선을 배열에 그려주고, 대각선을 기준으로 양쪽 값을 바꿔줍니다.

 

 

2단계

배열의 가운데 열을 기준으로, 좌우 대칭되는 지점의 값을 바꿔줍니다.

 

 

시계방향으로 90도 돌아간 모습의 2차원 배열이 완성되었습니다.

 

이 과정을 코드로 옮겨주면 끝!


풀어보기

for(int i=0; i<matrix.length; i++){
    for(int j=0; j<i; j++){
         int temp = matrix[i][j];
         matrix[i][j] = matrix[j][i];
         matrix[j][i] = temp;
    }
}

for(int i=0; i<matrix.length; i++){
    for(int j=0; j<matrix[0].length/2; j++){
        int temp = matrix[i][j];
        matrix[i][j] = matrix[i][matrix[0].length-j-1];
        matrix[i][matrix[0].length-j-1] = temp;
    }
}