백준 10996번 java 별 찍기 - 21 for문
위에 처럼 별이 출력되게 나오는 프로그램이다.
규칙을 좀 살펴볼 필요가 있는데 1입력은 신경쓸 필요없고 2와 3을 보면 n*2의 줄 수를 출력한다.
그리고 2는 한 줄에 하나씩 3은 2개 1개 2개 1개 이런식이다. n이 홀수면 홀수 줄 출력에는 (n+1)/2개의 별이 찍히는 것을 볼 수 있다.
바로 코드를 봐보자. 조오금 길다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
if(n==1)
System.out.println("*");
else {
for(int i=1; i<=n*2; i++)
{
if(i % 2 == 1)
//홀수 줄 출력
{
if(n % 2 == 0) //n이 짝수면
{
for(int j=1; j<=n/2; j++)
System.out.print("* ");
System.out.println();
}
else
{
for(int j=1; j<=(n+1)/2; j++)
System.out.print("* ");
System.out.println();
}
}
else
//짝수 줄 출력
{
for(int j=1; j<=n/2; j++)
System.out.print(" *");
System.out.println();
}
}
}
}
}
|
cs |
길어보이지만 사실 별로 뭐 내용은 간단하다.
line9,10 : 그냥 1이 입력되면 별 하나를 출력한다.
line12 : 1이상이 입력될 때 n*2개의 줄이 출력되므로 그만큼 for문으로 반복시킨다.
line14, 31 : 홀수 줄과 짝수 줄의 출력이 다르므로 구분해서 반복시킨다.
line17~21 : 홀수 줄은 왼쪽에 치우친 별을 출력시킨다.
또 n이 짝수냐 홀수냐도 구분시켜주는데 n이 짝수면 1/2만큼만 출력시키면 된다.
그러므로 n/2만큼 반복시키면서 별을 출력시켜주고 줄넘김을 하면 된다.
line24~29 : n이 홀수일 경우이다. n이 홀수에 홀수줄의 별출력규칙은 (n+1)/2이다. 그러므로 (n+1)/2로 반복시켜준다.
(3이면 (3+1)/2로 2개 출력시키게 한다.)
line31~37 : 짝수 줄을 출력할 때는 n이 홀수이건 짝수이건 똑같이 n/2만큼만 출력한다.
지금 풀고 있는 부분이 16단계 동적계획법인데 이제 겨우 5단계 포스팅하고 있으니 언제 다 작성할지.. 그것도 2단계서부터만 작성하기 시작했는데.. 그냥 코딩공부하는 것도 힘든데 공부한것들 포스팅하는건 두배로 귀찮다.
여러 학습자료들 꾸준하게 고퀄리티로 올려주시는 블로거님들 진심으로 존경합니다.
'프로그래밍 > 백준 알고리즘 코드' 카테고리의 다른 글
백준 2562번 java 최댓값 (1차원 배열) (0) | 2020.09.03 |
---|---|
백준 10818번 java 최소, 최대 (1차원 배열) (0) | 2020.09.03 |
백준 2446번 java별 찍기 - 9 for()문이 여섯개!! (0) | 2020.08.30 |
백준 2523번 java 별 찍기 - 13 다중for문 (0) | 2020.08.27 |
백준 10817번 Java 세 수 내림차순 정렬 (0) | 2020.08.20 |
댓글