-
백준 3023번 : 마술사 이민혁 (C 언어)c c++ 언어 공부 2023. 10. 14. 18:59
https://www.acmicpc.net/problem/3023
3023번: 마술사 이민혁
첫째 줄에 왼쪽 위 부분의 행의 개수 R과 열의 개수 C가 주어진다. (1 ≤ R, C ≤ 50) 다음 R개 줄에는 C개의 문자 '.' 또는 '#'가 주어진다. 마지막 줄에는 에러의 위치 A와 B가 주어진다. (1 ≤ A ≤ 2R, 1
www.acmicpc.net
Code:
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263#include <stdio.h>int main() {int r, c;int a, b;scanf("%d %d", &r, &c);char arr[101][101] = { 0, };char result[101][101] = { 0, };int x = 1, y = 1;for (int i = 0; i < r; i++){scanf("%s", arr[i]);}scanf("%d %d", &a, &b);for (int i = 0; i < r; i++){for (int j = 0; j < c; j++){result[i][j] = arr[i][j];}}for (int i = r; i < 2*r; i++){for (int j = 0; j < c; j++){result[i][j] = arr[i-y][j];}y+=2;}for (int i = 0; i < r; i++){for (int j = c; j < 2*c; j++){result[i][j] = arr[i][j-x];x += 2;}x = 1;}x = 1; y = 1;for (int i = r; i < 2*r; i++){for (int j = c; j < 2*c; j++){result[i][j] = arr[i-y][j-x];x += 2;}x = 1;y += 2;}if (result[a - 1][b - 1] == '#'){result[a - 1][b - 1] = '.';}else{result[a - 1][b - 1] = '#';}for (int i = 0; i < 2 * r; i++){printf("%s", result[i]);printf("\n");}}cs 문제 설명: 마술사 이민혁의 카드 뒷면 디자인
이민혁이 사용하는 카드의 뒷면은 특별한 방식으로 디자인됩니다. 카드 뒷면의 디자인은 왼쪽 위 1/4 부분을 디자인하고, 이를 대칭시켜 오른쪽 위를 만든 후 다시 대칭시켜 아래 부분을 완성합니다. 이때, 디자인 중 의도적인 에러를 생성하여 카드 뒷면을 완성합니다. 에러는 원래 '#'이어야 하는 칸을 '.'로 바꾸거나 '.'이어야 하는 칸을 '#'로 바꿔 생성됩니다.
주어진 입력에는 왼쪽 위 부분의 행과 열의 개수인 R과 C가 주어지고, 그에 따른 디자인과 에러의 위치 A와 B가 주어집니다. 우리의 목표는 이 정보를 활용하여 전체 카드 뒷면의 디자인을 완성하고 출력하는 것입니다.
코드 설명: C 프로그램
변수 r과 c는 왼쪽 위 부분의 행과 열의 개수를 나타냅니다. 변수 a와 b는 에러의 위치를 나타냅니다.
arr은 왼쪽 위 디자인과 에러를 저장하는 배열이며, result는 최종적인 카드 뒷면 디자인을 저장하는 배열입니다.
변수 x와 y는 배열에서 인덱스를 이동시키기 위한 변수입니다.
첫 번째 단계에서는 왼쪽 위 디자인을 입력받습니다.
두 번째 단계에서는 에러의 위치를 입력받습니다.
세 번째 단계부터는 주어진 디자인과 에러의 위치를 이용하여 전체 카드 뒷면의 디자인을 완성합니다. 먼저 왼쪽 위 1/4 디자인을 result에 복사하고, 이를 대칭시켜 오른쪽 위 부분을 완성합니다. 그 다음, 왼쪽 위 디자인에서 열의 방향으로 대칭시켜 아래 부분을 완성합니다. 마지막으로 오른쪽 아래 부분을 대칭시켜 전체 카드 뒷면의 디자인을 완성합니다.
마지막 단계에서는 에러의 위치에 따라 '#'과 '.'를 교체하여 최종 디자인을 완성합니다.
'c c++ 언어 공부' 카테고리의 다른 글
백준 16173번 : 점프왕 쩰리 (Small) (C 언어) (0) 2023.10.16 백준 1668번 : 트로피 진열 (C 언어) (0) 2023.10.15 백준 14248번 : 점프 점프 (C 언어) (1) 2023.10.12 백준 3985번 : 롤 케이크 (C 언어) (0) 2023.10.10 백준 2460번 : 지능형 기차2 (C 언어) (1) 2023.10.09