[★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
로만 구성하는 방법이 궁금하다면 이전 게시물들을 참고하길 바란다. BufferedReader
와 StringBuilder
로 구성한 코드는 아래와 같다.
[ 풀이 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
가 확실하게 성능면에서 우수한 것을 알 수있다.
'Coding Test > 백준' 카테고리의 다른 글
[★1][백준10952번 for JAVA]A+B - 5 (0) | 2023.03.21 |
---|---|
[★1][백준2439번 for JAVA]별 찍기 - 2 (0) | 2023.03.20 |
[★1][백준11021번 for JAVA]A+B - 7 (0) | 2023.03.18 |
[★2][백준11382번 for JAVA] 꼬마 정민 (0) | 2023.03.18 |
[★1][백준15596번 for JAVA]정수 N개의 합 (0) | 2023.02.27 |
댓글