코딩테스트 & 문제 풀이

[C]코드업_1097 : [기초-2차원배열] 바둑알 십자 뒤집기

2023. 4. 30. 00:07

2022년 7월 7일에 작성됨

 

https://www.codeup.kr/problem.php?id=1097 

 

[기초-2차원배열] 바둑알 십자 뒤집기(설명)

C언어기초100제v1.2 : @컴퓨터과학사랑, 전국 정보(컴퓨터)교사 커뮤니티/연구회 - 학교 정보(컴퓨터)선생님들과 함께 수업/방과후학습/동아리활동 등을 통해 재미있게 배워보세요.  - 모든 내용

www.codeup.kr

 

 

 

문제 분석

  • (19 x 19) 크기로 깔려 있는 바둑판 상황을 0 (검은 돌) 또는 1 (흰 돌)로 입력한다.
  • n번의 십자 뒤집기 할 횟수와 십자 뒤집기를 할 좌표 (x , y)를 입력한다.
  • (x , y) 좌표를 기준으로 십자 모양(+)에 있는 바둑돌이 0이면 1로, 1이면 0으로 바꿔준다. (단, 입력된 좌표는 뒤집기에서 제외한다.)
  • n번 만큼 바꿔준 후 (19 x 19) 크기의 바둑판 결과를 출력한다.

예를 들어 (7 x 7) 모양의 바둑판에서 n=2이고, 좌표는 (3 , 3), (5 , 5)이라고 하자.
먼저 (3 , 3)을 십자 뒤집기를 하면 아래 사진처럼 된다.

(3 , 3)을 제외하고 그 중심으로 십자 모양의 바둑돌을 1->0, 0->1으로 바꿔준 결과이다.
그 다음 (5 , 5)도 십자 뒤집기를 하면 아래 사진처럼 결과가 나온다.

 

 

소스 코드 (⭕)

#include <stdio.h>
int main()
{
    int n, i, j, x, y;
    int arr[20][20] = { 0, };

    for (i = 1; i <= 19; i++) {		// 한 줄씩 바둑판 상황 입력
        for (j = 1; j <= 19; j++) {
            scanf("%d", &arr[i][j]);
        }
    }
    scanf("%d", &n);		// 십자 뒤집기 횟수(n) 입력

    for (i = 1; i <= n; i++) {		// n 횟수 만큼 반복
        scanf("%d %d", &x, &y);		// 십자 뒤집기 할 좌표 입력

        for (j = 1; j <= 19; j++) {		// 가로 줄 (흑<->백) 바꾸기
            if (arr[x][j] == 0) arr[x][j] = 1;
            else arr[x][j] = 0;
        }
        for (j = 1; j <= 19; j++) {		// 세로 줄 (흑<->백) 바꾸기
            if (arr[j][y] == 0) arr[j][y] = 1;
            else arr[j][y] = 0;
        }
    }
    for (i = 1; i <= 19; i++) {		// 바둑판 결과 출력
        for (j = 1; j <= 19; j++) {
            printf("%d ", arr[i][j]);
        }
        printf("\n");
    }
    return 0;
}

 

코드 분석

1. 바둑판이 (19 x 19) 크기이므로 배열은 arr[20][20]으로 선언하고 0으로 초기화

 

2. 뒤집기 할 횟수 n과 뒤집기 할 좌표(x , y) 입력

3. 가로, 세로 흑(0), 백(1) 바꾸기 (if 0이면 1로, else 1이면 0으로)

4. 뒤집기 한 바둑판의 결과 출력

 

 

 

end

십자 뒤집기가 뭔지 몰라서 어려운 문제겠거니 했는데 생각보다 쉬운 문제였다. 코드 전체로 보면 엄청 어려워 보이는데 하나하나 보면 2차원 배열 기초만 알아도 이해가 잘 된다.

 

 

 

'코딩테스트 & 문제 풀이' 카테고리의 다른 글

[C]코드업_1099 : [기초-2차원배열] 성실한 개미  (2) 2023.05.01
[C]코드업_1098 : [기초-2차원배열] 설탕과자 뽑기  (0) 2023.04.30
[C]코드업_1096 : [기초-2차원배열] 바둑판에 흰 돌 놓기  (0) 2023.04.29
[C]백준_2292 : 벌집  (0) 2023.04.28
[C]백준_10250 : ACM 호텔  (0) 2023.04.27
  1. 문제 분석
  2. 소스 코드 (⭕)
  3. 코드 분석
  4. end
'코딩테스트 & 문제 풀이' 카테고리의 다른 글
  • [C]코드업_1099 : [기초-2차원배열] 성실한 개미
  • [C]코드업_1098 : [기초-2차원배열] 설탕과자 뽑기
  • [C]코드업_1096 : [기초-2차원배열] 바둑판에 흰 돌 놓기
  • [C]백준_2292 : 벌집
Hicecream
Hicecream
Hicecream
Hicecream
Hicecream
전체
오늘
어제
  • 분류 전체보기 (199)
    • 코딩테스트 & 문제 풀이 (159)
    • 동아리 활동 (8)
    • 외부 활동 (0)
    • 대학 과제 (3)
    • Git & Git Hub (5)
    • 코딩 프로젝트 (1)
    • 공부 메모 (17)
    • 일상 (2)
    • 참고사항 (2)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • Code up
  • Silver 4
  • 문자열
  • Bronze 4
  • LV1
  • Bronze 2
  • C
  • 구현
  • Java
  • Bronze 1
  • python
  • C언어 기초 100제
  • BOJ
  • Bronze 3
  • 사칙연산
  • 수학
  • programmers
  • 정렬
  • Silver 5
  • Bronze 5

최근 댓글

최근 글

hELLO · Designed By 정상우.
Hicecream
[C]코드업_1097 : [기초-2차원배열] 바둑알 십자 뒤집기
상단으로

티스토리툴바

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.