문제 : abc250_b
패턴을 잘 살펴보면 결국 NxA행, NxB열의 문자열을 출력하면 된다. 그리고, 시작하는 문자가 '.'으로 시작하는게 A줄, 그 다음 '#'으로 시작하는게 A줄... 을 N줄동안 수행하면 된다. 단순 구현문제긴 한데 반복문에 익숙치 않다면 좀 어려울 수 있다. 4중 for문에서 처음 2중은 N과 A, 그 다음 2중은 N과 B라고 생각하면, 코드로는 4중 for문이지만 개념적으로는 2중 for문이 된다. 그럼 좀 더 쉽게 구해볼 수 있다.
boolean값을 잘 설정해서 한번 구현해보자. 참고로 이하 코드에서 'i&1==0'은 i가 짝수라면 true, 홀수라면 false 이다(왜 그런지는 짝수와 홀수를 아무 숫자나 2진수로 바꿔보면 알 수 있다.). 'isWhite^swt'에서 '^'은 XOR이다. 좌우의 boolean값이 동일하다면 false, 다르다면 true가 된다.
코드 : github
...
private void solution() throws Exception {
int n = nextInt();
int a = nextInt();
int b = nextInt();
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n; i++) {
boolean isWhite = (i&1)==0;
for (int x = 0; x < a; x++) {
for (int j = 0; j < n; j++) {
boolean swt = (j&1)==1;
for (int y = 0; y < b; y++) {
sb.append(isWhite^swt ? '.':"#");
}
}
sb.append('\n');
}
}
System.out.print(sb);
}
...
'PS > AtCoder' 카테고리의 다른 글
[ABC250] D - 250-like Number (AtCoder Beginner Contest 250 with Java) (0) | 2022.05.09 |
---|---|
[ABC250] C - Adjacent Swaps (AtCoder Beginner Contest 250 with Java) (0) | 2022.05.09 |
[ABC250] A - Adjacent Squares (AtCoder Beginner Contest 250 with Java) (0) | 2022.05.09 |
AtCoder Beginner Contest 248 참여후기 (ABC248) (0) | 2022.04.17 |
AtCoder Beginner Contest 224 참여후기 (ABC 224) (0) | 2021.10.23 |
댓글