[★1][백준2438번]별 찍기 - 1 (JAVA)

Date:     Updated:

카테고리:

태그:

[★1][백준2438번]별 찍기 - 1 (JAVA)

2438번 문제 ☞ https://www.acmicpc.net/problem/2438

난이도 ☞ [★1]

별 찍기 - 1

  • 문제
    • 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
    • 첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
    • 첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.

      예제입력 예제출력
      5 *
      **
      ***
      ****
      *****

내가 푼 풀이

이번 문제는 입력 받은 행까지 출력을 하기 위해서 큰 틀의 반복문을 구성하고, 그 안에 반복문을 넣어 이중반복문을 만들고, 그 반복문 안에는 i만큼 반복하는 for문을 작성해야한다. 그 반복문은 아래와 같다.

for (int i = 1; i <= a; i++) {
	for (int j = 1; j <= i; j++) {
		System.out.print("*");      // (주의)println이 아닌 print로 작성
	}
	System.out.println();       // 한 행의 출력이 끝나고나면 줄 바꿈 처리
}

[ 풀이 1 ]

메모리 : 18160KB
시간 : 300ms

Scanner

import java.util.Scanner;

public class Main {
	public static void main(String[] args) {
		Scanner s = new Scanner(System.in);

		int a = s.nextInt();

		s.close();
		
		for (int i = 1; i <= a; i++) {
			for (int j = 1; j <= i; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
	}
}

위의 방식은 제일 기본적인 Scanner방식이고, BufferedReader로도 출력이 가능하지만, BufferedReader를 약간 더 응용해서 StringBuilder와 함께 작성해보도록 하겠다. BufferedReader로만 구성하는 방법이 궁금하다면 이전 게시물들을 참고하길 바란다. BufferedReaderStringBuilder로 구성한 코드는 아래와 같다.

[ 풀이 2 ]

메모리 : 14212KB
시간 : 124ms

BufferedReader, StringBuilder

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

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

		int a = Integer.parseInt(br.readLine());

		br.close();

		StringBuilder sb = new StringBuilder();

		for (int i = 1; i <= a; i++) {
			for (int j = 1; j <= i; j++) {
				sb.append("*"); 	// 반복 횟수만큼 작성하고 sb에 저장
			}
			sb.append("\n"); 		// 줄바꿈 처리를 해줌
		}
		System.out.println(sb);		// sb에 있는 데이터를 한번에 꺼내어 출력
	}
}

Scanner보다 BufferedReader가 확실하게 성능면에서 우수한 것을 알 수있다.

BKJN 카테고리 내 다른 글 보러가기

댓글 남기기