본문 바로가기
알고리즘/백준

2444번 문제 : 별 찍기 - 7

by son_i 2023. 4. 24.
728x90

 

2444번: 별 찍기 - 7 (acmicpc.net)

 

2444번: 별 찍기 - 7

첫째 줄부터 2×N-1번째 줄까지 차례대로 별을 출력한다.

www.acmicpc.net

입력을 보고 규칙을 찾아서 코딩하는 문제

나는 보기에 입력된 수의 줄만큼 홀수개로 별이 증가하면서 찍히고 다 찍히면 다시 역순으로 돌아가는 거로 생각하고 코딩했다. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

class Main{
	public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());
		int m=1;
		for(int k=1;k<=n;k++) {
			for(int i=0;i<n-k; i++) { //띄어쓰기 갯수
				System.out.print(" ");
			}
			for(int j=0;j<m;j++) {
				System.out.print("*");
			}
			m+=2;
			for(int i=0;i<n-k; i++) { //띄어쓰기 갯수
				System.out.print(" ");
			}
			System.out.println(" ");
		}
		m-=4;
		for(int k=1;k<n;k++) {
			for(int i=k;i>0; i--) { //띄어쓰기 갯수
				System.out.print(" ");
			}
			for(int j=0;j<m;j++) {
				System.out.print("*");
			}
			m-=2;
			for(int i=k;i>0; i--) { //띄어쓰기 갯수
				System.out.print(" ");
			}
		}
	}
}

출력형식이 잘못됐다길래 찾아보니까 띄어쓰기로도 이렇게 나올 수 있다고 했다.

 

원인은 별을 찍은 다음에 굳이 띄어쓰기 출력 안 해줘도 되는데 내가 넣었다

그래서 뺐음 !

package algorithm;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.StringTokenizer;

class Main{
	public static void main(String[] args) throws IOException {
    	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

		int n = Integer.parseInt(br.readLine());
		int m=1;
		for(int k=1;k<=n;k++) {
			for(int i=0;i<n-k; i++) { //띄어쓰기 갯수
				System.out.print(" ");
			}
			for(int j=0;j<m;j++) {
				System.out.print("*");
			}
			m+=2;
			System.out.println(" ");
		}

		m-=4;
		for(int k=1;k<n;k++) {
			for(int i=k;i>0; i--) { //띄어쓰기 갯수
				System.out.print(" ");
			}
			for(int j=0;j<m;j++) {
				System.out.print("*");
			}
			m-=2;
			System.out.println(" ");

		}
	}
}