C++ - n x n 2차원 배열에 대한 조작 (90도 회전 / 점대칭 / 선대칭)

2020. 4. 21. 09:34·Language/C++

[n x n 2차원 배열에 대한 조작 (90도 회전 / 점대칭 / 선대칭)]

 

(i, j) : i 행, j 열 이라고 가정.

 

(1) 90도 조작 

(i, j) => (j, n - i - 1)

 

(2) x축 대칭

(i, j) => (n - i - 1, j)

 

(3) y축 대칭

(i, j) => (i, n - j - 1)

 

(4) 점대칭

(i, j)  => (n - i - 1, n - j - 1)

void turn(){
    int tmp_arr[20][20];             // 임시로 배열을 생성하여 이곳에 원본을 조작한 배열을 기록해 
    for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++){
            tmp_arr[n - i - 1][j] = arr[i][j];          // x축 대칭
            tmp_arr[i][n - j - 1] = arr[i][j];          // y축 대칭
            tmp_arr[n - i - 1][n - j - 1] = arr[i][j];  // 점대칭
            tmp_arr[j][n - i - 1] = arr[i][j];          // 90도 회전
        }
    
    // 원본 배열에 다시 복사하는 과정
       for(int i = 0; i < n; i++)
        for(int j = 0; j < n; j++)
            arr[i][j] = tmp_arr[i][j];
 
}
    

출처 : https://yomyom0824.tistory.com/57

 

관련 알고리즘 문제 :

https://www.acmicpc.net/problem/3023

 

3023번: 마술사 이민혁

문제 유명한 마술사인 이민혁이 사용하는 카드의 뒷 면은 모두 자신이 디자인한 카드이다. 민혁이는 카드 뒷 면 전체를 디자인하지 않고, 왼쪽 위 1/4만 디자인한다. 그 다음 대칭시켜 오른쪽 위를 만들고, 다시 대칭시켜서 아래 부분을 모두 만든다. 이렇게 대칭시켜서 전체를 디자인 한 이후에는, 마술하는데 사용하기 위한 의도된 에러를 넣는다. 에러는 원래 '#'이어야 하는 칸을 '.'로 바꾸거나 '.'이어야 하는 칸을 '#'로 바꾸는 것이다. 왼쪽 위의 디자

www.acmicpc.net

 

'Language > C++' 카테고리의 다른 글

C++ - String 클래스, 문자열 총정리  (0) 2020.06.19
C++ - 1차원 배열에서의 시계방향, 반시계 방향 (feat: rotate)  (0) 2020.05.01
C++ - Algorithm 헤더 파일 binary_search(), lower_bound(), upper_bound()  (0) 2020.04.13
C++ - Algorithm 헤더 파일 replace(), replace_if(), remove(), remove_if()  (0) 2020.04.13
C++ - Algorithm 헤더 파일 reverse(), rotate(), random_shuffle()  (0) 2020.04.13
'Language/C++' 카테고리의 다른 글
  • C++ - String 클래스, 문자열 총정리
  • C++ - 1차원 배열에서의 시계방향, 반시계 방향 (feat: rotate)
  • C++ - Algorithm 헤더 파일 binary_search(), lower_bound(), upper_bound()
  • C++ - Algorithm 헤더 파일 replace(), replace_if(), remove(), remove_if()
dev.wookii
dev.wookii
Effort Maketh Happiness
  • dev.wookii
    습관처럼
    dev.wookii
  • 전체
    오늘
    어제
    • 분류 전체보기 (295)
      • Language (35)
        • python (13)
        • C++ (22)
      • Kaggle (4)
      • Algorithms (112)
        • BOJ (58)
        • programmers (43)
        • SWExpertAcademy (2)
      • Certification (38)
        • Adsp (0)
        • Sqld (28)
        • 정처기 (9)
        • 빅데이터 분석기사 (0)
      • Data Analysis & ML (6)
      • 금융 & 디지털 (65)
      • CS (32)
        • DB (2)
        • SE (3)
        • Web&JSP (1)
        • Network (11)
        • OS (2)
        • Linux&Unix (6)
        • Server (1)
        • UX,UI (1)
        • 보안 (5)
      • 기타 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    funny algorithms
    programmers
    2020 KAKAO
    시뮬레이션
    Ebay korea #coding test
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dev.wookii
C++ - n x n 2차원 배열에 대한 조작 (90도 회전 / 점대칭 / 선대칭)
상단으로

티스토리툴바