algorithm 백준 16433 주디와 당근농장 (c)
주디는 오랜만에 부모님이 살고 계시는 농장을 방문하여 일손을 돕기로 하였습니다.
주디가 할 일은 N × N 격자 모양의 밭에 당근을 심는 일입니다. 각 칸에는 최대 하나의 당근을 심을 수 있는데 어떤 칸에 당근이 심겨 있으면 그 칸의 변을 공유하는 칸들에는 당근을 심을 수 없습니다.
주디는 이미 위치가 (R, C) 인 칸에 당근을 하나 심었고 나머지 칸에도 당근을 심으려고 합니다. 주디가 최대한 많은 당근을 심었을 때 밭이 어떤 모양일지 알려주세요. 주디는 심을 당근을 무한히 가지고 있다고 가정합니다.
첫 번째 줄부터 N번째 줄까지 각 줄에 길이가 N인 문자열을 출력합니다.
i행 j열에 당근이 심어졌다면 i번째 줄 j번째 문자를 ‘
v
’ 로 표시하며 심어지지 않았다면 ‘.
’ 로 표시합니다.[출처] : 백준 온라인 저지
풀이
#include <stdio.h>
int main() {
int n, r, c;
scanf("%d %d %d", &n, &r, &c);
int i, j;
for (i = 0; i < n; i++) {
for (j = 0; j < (n/2); j++) {
if ((r % 2 == 0 && c % 2 == 0) || (r % 2 != 0 && c % 2 != 0)) {
if (i % 2 != 0) printf(".v");
else printf("v.");
}
else {
if (i % 2 == 0) printf(".v");
else printf("v.");
}
}
if (n % 2 != 0) {
if ((r % 2 == 0 && c % 2 == 0) || (r % 2 != 0 && c % 2 != 0)) {
if (i % 2 != 0) printf(".");
else printf("v");
}
else {
if (i % 2 == 0) printf(".");
else printf("v");
}
}
printf("\n");
}
}
- n x n 당근 밭에 (r,c)에 당근을 심었을 때, 밭을 꽉 채운 당근밭의 모양을 출력하면 된다
- 결국 당근밭의 모양은 두 가지가 될 수 밖에 없다
- 1번 : (홀수, 홀수) (짝수,짝수)에 당근 심기
- 2번 : (홀수, 짝수) (짝수, 홀수)에 당근 심기
- n 이 홀수라면 두 번째 for 문에서 마지막 열이 출력되지 않기 때문에 if (n%2 != 0) 조건으로 마지막 열의 값을 출력
Comments