[C++] BOJ 16926번 : 배열 돌리기 1
📝 문제
💻 실행 코드
// BOJ 16926번 : 배열 돌리기 1
#include <iostream>
using namespace std;
int main() {
int arr[301][301]; // 배열 생성
int dx[4] = {0, 1, 0, -1}; // 우상좌하
int dy[4] = {1, 0, -1, 0};
int n, m, r;
cin >> n >> m >> r;
for(int i = 0; i < n; i++){ // 배열 입력받기
for(int j = 0; j < m; j++){
cin >> arr[i][j];
}
}
for(int i = 0; i < r; i++){ // 회전 횟수만큼 반복
for(int j = 0; j < min(n, m) / 2; j++){ //
int x = j;
int y = j;
int value = arr[x][y];
int tmp = 0;
while(tmp < 4){
int nx = x + dx[tmp];
int ny = y + dy[tmp];
if(nx == j && ny == j) break;
if(nx >= j && ny >= j && nx < n - j && ny < m - j){
arr[x][y] = arr[nx][ny];
x = nx;
y = ny;
}
else
tmp++;
}
arr[j + 1][j] = value;
}
}
for(int i = 0; i < n; i++){
for(int j = 0; j < m; j++){
cout << arr[i][j] << " ";
}
cout << "\n";
}
}
📚 문제 풀이
배열을 생성한 뒤 입력을 받음
회전 횟수만큼 반복을 하고 배열 크기중 작은 것을 2로 나눈 만큼 반복
value, x, y를 j로 초기화해주고 4까지 반복
nx와 ny에 우상좌하를 반복하며 값을 더해 넣어주고 만약 nx와 ny가 j랑 같을 때 종료
nx와 ny가 j보다 크거나 같고, nx와 ny가 n과 m에서 j를 뺀 값보다 작을 때 arr을 갱신
최종으로 arr[j + 1][j]에 value를 넣어줌
✅ 실행 결과
Author And Source
이 문제에 관하여([C++] BOJ 16926번 : 배열 돌리기 1), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kwonjeong/C-BOJ-16926번-배열-돌리기-1저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)