(반)시계 회전 함수의 N, M 처리 방식
안녕하세요, BOJ 16935번 문제를 풀던 중 시계 방향 회전(clockwise)과 반시계 방향 회전(counterClockwise) 함수의 구현 방식 차이에 대해 헷갈리는 부분이 있어 질문드립니다. (강의 6:22)
// 시계 방향 회전
void clockwise() {
copyMAP(temp, MAP);
int t = N; N = M; M = t;
for (int r = 1; r <= N; r++) {
for (int c = 1; c <= M; c++) {
MAP[r][c] = temp[M + 1 - c][r];
}
}
}
// 반시계 방향 회전
void counterClockwise() {
copyMAP(temp, MAP);
int t = N; N = M; M = t;
for (int r = 1; r <= N; r++) {
for (int c = 1; c <= M; c++) {
MAP[r][c] = temp[c][N + 1 - r];
}
}
}
궁금한 점은,
clockwise()에서는temp[M + 1 - c][r]처럼 회전 전의 N, M 기준으로 접근하는거고,counterClockwise()에서는temp[c][N + 1 - r]처럼 바뀐 후의 N, M을 그대로 사용하는 건가요?
이 부분이 좀 헷갈려서 질문 드립니다. 감사합니다.
回答 1
0
안녕하세요!
회전 전, 후 (N, M) 기준으로 생각하는 것보다, row와 col의 범위를 보고 생각하시면 편할 것 같습니다.
clockwise에서 for문의 c의 범위는 1부터 M까지이니 M + 1 - c가 되어야하고,
counterClockwise에서 r의 범위가 1부터 N이니 N + 1 - r이 됩니다.
그래서 회전 전,후를 기준으로 N과 M을 그대로 쓰냐, 바꿔서 쓰냐는 관계가 없습니다.
input.txt에 N x M 배열을 입력해서 N이나 M을 바꿔보면서 결과를 보시면 더 이해가 잘 되실 것 같습니다.
또 문의사항이 있으면 답변 드리겠습니다.
감사합니다.
코딩살구클럽 승인
0
2
1
코딩살구클럽승인
0
7
1
코딩살구클럽 승인
0
36
2
3-D 관련 질문
0
31
2
코살구 회원가입 문의
0
38
2
강의노트 접속 불가
0
28
2
코살구 로그인 문제
0
56
2
3-A 문제 풀이 관련 질문
0
50
3
2-O 질문 있습니다
0
37
2
2-T 문제에 관한 질문
0
37
2
코딩 살구 클럽 접속 및 사용방법 문의
0
55
2
안녕하세요~. 현재 코살코딩클럽 사이트가 접속이 안됩니다~
0
64
2
코딩살구클럽 로그인문제
0
74
3
OEM에서 하는 A-SPICE
0
40
2
코딩 살구 클럽 로그인 문제
0
79
2
2-J 채점관련 질문
0
65
3
Part2 기출 문제 및 해설 자료 파일 없음 형태
0
53
2
코딩 살구 클럽 Python 지원 가능 여부
0
77
1
살구클럽 아이디 없음 문제
0
76
1
1-O 코딩살구클럽 채점관련 질문
0
60
2
히든 테스트 케이스가 사라졌습니다
0
57
1
Visual studio 2017 을 설치할 수 없어요
0
96
2
안녕하세요 선생님 코드트리 원자충돌(2020 하반기 오전 2번)에서 질문 있습니다.
1
127
2
BOJ 2234 성곽 문제 코드에서 질문 있습니다.
2
174
1

