반응형
링크
https://www.acmicpc.net/problem/16433
풀이
한 위치에 당근이 심어져 있고, 당근이 심겨 있는 땅의 변을 공유하는 칸들에는 당근을 심을 수 없습니다.
이때 최대한 많은 당근을 심었을 때 밭의 모양을 출력하는 문제입니다.
$N*N$의 격자입니다. $N$이 짝수일 때는 사진과 같이 $\frac{N*N}{2}$만큼 당근을 심을 수 있습니다.
그렇다면 홀수일 때는 어떨까요?
네! (1,1)칸에 당근을 심는지 아닌지에 따라 +1, -1의 차이가 있긴 하지만 당근을 심는 위치는 짝수와 비슷합니다.
이로써 $N$이 짝수든 홀수든 중요한 건 처음 당근을 심는 위치가 되겠네요!
저렇게 교차하듯이 당근을 심어야하기 때문에 xor을 사용해서 처음 당근이 (홀,홀)이나 (짝,짝)이라면 다른 당근들도 (홀,홀)과 (짝,짝)에 심어주면 되고, 처음 당근이 (홀,짝)이나 (짝,홀)이라면 다른 당근들도 (홀,짝)과 (짝,홀)에 심어주면 됩니다.
map 같은 배열 필요 없이 출력으로만 구현하시면 됩니다!
코드
//16433_주디와 당근농장
#include <cstdio>
int n, r, c;
int main() {
scanf("%d %d %d", &n, &r, &c);
for (int i = 1; i <= n; ++i) {
for (int j = 1; j <= n; ++j) {
printf("%c", (i % 2) ^ (j % 2) == (r % 2) ^ (c % 2) ? 'v' : '.');
}
printf("\n");
}
return 0;
}
반응형
'PS > BOJ' 카테고리의 다른 글
[백준 BOJ] 5585 거스름돈 (0) | 2019.08.13 |
---|---|
[백준 BOJ] 11399 ATM (0) | 2019.08.13 |
[백준 BOJ] 10988 팰린드롬인지 확인하기 (0) | 2019.08.13 |
[백준 BOJ] 5598 카이사르 암호 (0) | 2019.08.12 |
[백준 BOJ] 2231 분해합 (0) | 2019.08.12 |