문제
나의 풀이
나는 가장 처음에 *이 출력되고, 두 번째부터 공백과 *이 함께 찍힌다고 인식했다. 그 찍히는 방식은 입력된 숫자가 홀짝이냐에 따라 달라진다. 그리고 그렇게 출력된 두 줄이 입력된 숫자만큼 반복된다.
package baekjunOnlineJudge;
import java.util.Scanner;
public class Bj_10996 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
for(int i=0; i<N; i++) {
System.out.print("*");
for(int j=0; j<Math.floor((N-0.1)/2); j++){
System.out.print(" *");
}
System.out.println();
for(int j=0; j<N/2; j++) {
System.out.print(" *");
}
System.out.println();
}
}
}
다른 사람 풀이 (출처: dlsghchl1)
그야말로 멋진 코드이다. 첫 번째의 별 하나 찍히는 것까지 구현됐다. '줄'을 나타내는 첫번째 for문의 제어식 조건문에 n*2를 넣었다. 가로로 뻗어나가는 '열'을 나타는 안 쪽 for문은 홀수 줄과 짝수 줄, 홀수 열과 짝수 열을 철저히 구분했다.
이렇게 풀 수 있는 사람이 되고 싶다.
package baekjunOnlineJudge;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Bj_10996_others {
public static void main(String []args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int n = Integer.parseInt(br.readLine());
StringBuilder sb = new StringBuilder();
for (int i = 0; i < n*2; i++) {
for (int j = 0; j < n; j++) {
if (i % 2 == 0) {
if (j % 2 == 0)
sb.append('*');
else
sb.append(' ');
} else {
if (j % 2 == 0)
sb.append(' ');
else
sb.append('*');
}
}
sb.append("\n");
}
System.out.print(sb);
}
}
'프로그래밍-학습기록 > 코딩테스트' 카테고리의 다른 글
백준 온라인 저지 | 2562 | 배열: 최댓값 (0) | 2020.07.27 |
---|---|
백준 온라인 저지 | 10818 | 1차원 배열: 최소, 최대 (0) | 2020.07.23 |
백준 온라인 저지 | 2446 | 별찍기 - 9 (0) | 2020.07.22 |
백준 온라인 저지 | 10871 | 실습: 세 수 (0) | 2020.07.20 |
백준 온라인 저지 | 5543 | 실습: 상근날드 (0) | 2020.07.20 |