algorithm 백준 16433 주디와 당근농장 (c)

1 minute read

주디는 오랜만에 부모님이 살고 계시는 농장을 방문하여 일손을 돕기로 하였습니다.

주디가 할 일은 N × N 격자 모양의 밭에 당근을 심는 일입니다. 각 칸에는 최대 하나의 당근을 심을 수 있는데 어떤 칸에 당근이 심겨 있으면 그 칸의 변을 공유하는 칸들에는 당근을 심을 수 없습니다.

주디는 이미 위치가 (R, C) 인 칸에 당근을 하나 심었고 나머지 칸에도 당근을 심으려고 합니다. 주디가 최대한 많은 당근을 심었을 때 밭이 어떤 모양일지 알려주세요. 주디는 심을 당근을 무한히 가지고 있다고 가정합니다.

첫 번째 줄부터 N번째 줄까지 각 줄에 길이가 N인 문자열을 출력합니다.

ij열에 당근이 심어졌다면 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) 조건으로 마지막 열의 값을 출력

Categories:

Updated:

Comments