Leetcode Java Flipping an Image
업데이트:
문제
코드
class Solution {
public int[][] flipAndInvertImage(int[][] image) {
for (int[] row : image) {
for (int left = 0, right = row.length - 1; left <= right;) {
int temp = row[left];
row[left++] = 1 - row[right];
row[right--] = 1 - temp;
}
}
return image;
}
}
결과
설명
- $n \times n$의 2차원 배열인 image를 수평으로 뒤집은 후 값을 반전시킨 결과를 반환하는 문제이다.
- 수평으로 뒤집는다는 의미는 임의 행인 [0, 1, 1]의 중간 위치를 기준으로 좌우의 값을 바꾸어 [1, 1, 0]이 된다는 의미이다.
- 값을 반전시킨다는 의미는 위의 [1, 1, 0]을 [0, 0, 1]로 1과 0을 바꾸어 준다는 의미이다.
- image의 각 행을 row에 넣은 후 아래를 반복한다.
- left는 0, right는 $row.length - 1$로 right가 left보다 크거나 같을 때 까지 아래를 반복한다.
- temp에 row의 left 값을 임시 보관하고 1에서 row의 right번째 값을 뺀 값을 해당 위치에 넣고 left를 증가시킨다.
- row의 right의 위치에 1에서 temp를 뺀 값을 넣고 right를 감소시킨다.
- left는 0, right는 $row.length - 1$로 right가 left보다 크거나 같을 때 까지 아래를 반복한다.
- 반복이 완료되면 결과가 저장된 image를 주어진 문제의 결과로 반환한다.
소스
Sample Code는 여기에서 확인 가능합니다.
댓글남기기