알고리즘 문제를 해결할 때 배열을 회전할 경우가 매우 많다. 한번씩 헷갈린 경우가 있기에 여러번 보자.
새로운 배열 (i,j)에는 90도 회전하기전의 값들이 들어가야한다, 즉 90도 반시계 위치의 값들이 있어야한다,
우선 i, j에서 i가 0행으로 보자, 0행 0열일 경우 (n -1 - j행,i열) 값들이 순차적으로 들어오게된다.
new_grid[i][j] = grid[n - 1 - j][i]
void Rotate() {
memset(next_grid, 0, sizeof(next_grid));
for(int i = 0 ; i < n ; i++)
for(int j = 0 ; j < n ; j++)
next_grid[i][j] = grid[n - j -1][i];
for(int i = 0 ; i < n ; i++)
for(int j = 0 ; j < n; j++)
grid[i][j] = next_grid[i][j];
}
'알고리즘 > 알고리즘 개념?부족?_' 카테고리의 다른 글
비트연산 - Bit Operation (0) | 2021.12.14 |
---|---|
달팽이 비스무리한 것 (시뮬레이션, c++) (0) | 2021.12.11 |
최대 최소 (0) | 2021.12.10 |