<문제>
https://www.acmicpc.net/problem/3076
3076번: 상근이의 체스판
출력은 R * A행 C * B열로 이루어져 있어야 하며, 문제에서 설명한 상근이의 체스판을 출력한다.
www.acmicpc.net
<내가 제출한 코드>
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int r, a, c, b;
int i,j,k,l;
int arr[10][10] = { 0 };
scanf("%d %d", &r, &c);
scanf("%d %d", &a, &b);
for (i = 0; i < r; i++) {
for (j = 0; j < a; j++) {
for (k = 0; k < c; k++) {
for (l = 0; l < b; l++) {
if ((i + k) % 2 == 0) printf("X");
else printf(".");
}
}
printf("\n");
}
}
return 0;
}
(생각보다 아이디어는 간단했는데 머리가 복잡해서 오래걸렸다. ... 아쉽)
변수 i, j, k, l 을 선언하여 각각 r, a, c, b 의 역할을 맡게(?) 했다.
4중 반복문을 생각한다는게~ 좀 어려웠는데 변수가 4개니까 잘 생각해서 한번 뇌가 뚫리면 쉽게 생각할 수 있다.
X와 . 출력을 생각하는 게 가장 어려웠는데 쉽게 생각해보면 예를 들어 이러한 문제가 나왔다고 치자,
X와 . 으로 표시해야 하는 곳을 한 덩어리라고 가정해서 생각해보면 이러한 표를 만들 수 있다.
k=0 | k=1 | k=2 | k=3 | |
i=0 | X | . | X | . |
i=1 | . | X | . | X |
i=2 | X | . | X | . |
i=3 | . | X | . | X |
i=4 | X | . | X | . |
X, . 과 i,k과의 관계를 생각해보면 i+k가 짝수일때 X이고 홀수일때 . 이 출력된다.
이를 이용하여
if ((i + k) % 2 == 0) printf("X");
else printf(".");
이부분의 코드를 짤 수 있었고,
한 줄을 모두 출력하고나서는 줄바꿈을 하기 위하여 printf("\n")도 잊지않고 출력해주었다.
'⌨️ Algorithm > C' 카테고리의 다른 글
1/10 [C] 백준 5426번 - 비밀 편지 (0) | 2022.01.24 |
---|---|
1/7 [C언어] 백준 23292번 - 코딩 바이오리듬 (0) | 2022.01.07 |
1/6 [C] 백준 1440번 - 타임머신 (0) | 2022.01.06 |
1/3 [C] 백준 21734번 - SMUPC의 등장 (0) | 2022.01.03 |
1/3 [C] 백준 6359번 - 만취한 상범 (0) | 2022.01.03 |
댓글