inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

SW 역량테스트 합격하기 A형 with C++ (Advanced Algorithm)

BOJ 16935 - 배열 돌리기 3

(반)시계 회전 함수의 N, M 처리 방식

해결된 질문

179

xeexae0808

작성한 질문수 1

0

안녕하세요, 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];

}

}

}

궁금한 점은,

이 부분이 좀 헷갈려서 질문 드립니다. 감사합니다.

c++ 코딩-테스트 소프트웨어-테스트 알고리즘

답변 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

34

2

고정댓글

0

26

1

안녕하세요 Rookiss님 기본기를 다지고 있는 대학생입니다.

0

84

2

Queue

0

44

1

8-2. 단항 연산자 중복 : 전위 ++ 연산자 작성 질문

0

55

1

코딩살구클럽 가입문의

0

56

2

메타휴먼 적용 관련 질문입니다

0

71

1

3-K private case 질문

0

56

2

안녕하세요. 코딩살구클럽 문의드립니다!

0

70

2

스프링 암 조절을 임의로 진행해도 강의를 따라갈 수 있나요?

0

73

2

숙제 노션 링크 안들어가집니다

0

53

1

7:41 듣다가 질문합니다

0

63

2

코드 리뷰 요청드립니다!

0

63

2

코테의 바이블 수강생 코테올인원 JAVA 쿠폰

0

45

1

코딩살구클럽 계정 문의

0

68

2

SK하이닉스 대비 강의수강

0

198

3

코딩살구클럽 등록부탁드립니다.

0

67

2

응시권 신청했는데 아직 안들어오고있습니다.

0

59

1

7-F 재귀로 풀시 런타임애러

0

63

1

Post, PostEntity에서 User, UserEntity 의존

0

60

1

1-N 문제 질문입니다. (+ 채점오류)

0

71

2

Visual studio 2017 을 설치할 수 없어요

0

132

2

안녕하세요 선생님 코드트리 원자충돌(2020 하반기 오전 2번)에서 질문 있습니다.

1

171

2

BOJ 2234 성곽 문제 코드에서 질문 있습니다.

2

199

1