[★1][백준2439번]별 찍기 - 2 (JAVA)
2439번 문제 ☞ https://www.acmicpc.net/problem/2439
난이도 ☞ [★1]
별 찍기 - 2
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
첫째 줄부터 N번째 줄까지 차례대로 별을 출력한다.
예제입력 예제출력 5 *
**
***
****
*****
내가 푼 풀이
이번 문제는 공백(" ")과 별()의 갯수를 잘 생각해서 작성을 해야되는 부분입니다. 예제를 예로 들었을 때, 공백(" ")은 4개로 시작해서 점차 하나씩 줄어들고 0에 도달하고 있고, 별()은 하나씩 증가함을 보이고 있습니다. 순서를 따져보자면 공백(" ") -> 별(*)
의 순서로 출력을 하고 있어 반복문을 정리를 해보자면 아래와 같습니다.
for (int i = 1; i <= a; i++) {
for (int j = 1; j <= a - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < i; k++) {
System.out.print("*");
}
System.out.println();
}
값을 받은 a
- 반복횟수 i
를 해주면 자연스럽게 4, 3, 2, 1, 0
으로 줄어 들게 되면서 공백(" ")의 갯수는 줄어들어 입력되게 됩니다. 그리고 별()은 i
번 반복될 때 `의 갯수는
i`와 같이 증가하니 위와 같이 정의를 해준다면 될 것입니다.
[ 풀이 1 ]
메모리 :
22284KB
시간 :376ms
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 <= a - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < i; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
위의 방식은 제일 기본적인 Scanner
방식이고, BufferedReader
로도 출력이 가능하지만, BufferedReader
를 약간 더 응용해서 StringBuilder
와 함께 작성해보도록 하겠다. BufferedReader
로만 구성하는 방법이 궁금하다면 이전 게시물들을 참고하길 바란다. BufferedReader
와 StringBuilder
로 구성한 코드는 아래와 같다.
[ 풀이 2 ]
메모리 :
14288KB
시간 :144ms
BufferedReader, StringBuilder
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class NO2439BOJ2 {
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 <= a - i; j++) {
sb.append(" ");
}
for (int k = 0; k < i; k++) {
sb.append("*");
}
sb.append("\n");
}
System.out.println(sb);
}
}
Scanner
보다 BufferedReader
가 확실하게 성능면에서 우수한 것을 알 수있다.
'Coding Test > 백준' 카테고리의 다른 글
[★1][백준10952번 for JAVA]A+B - 4 (0) | 2023.03.22 |
---|---|
[★1][백준10952번 for JAVA]A+B - 5 (0) | 2023.03.21 |
[★1][백준2438번 for JAVA]별 찍기 - 1 (0) | 2023.03.19 |
[★1][백준11021번 for JAVA]A+B - 7 (0) | 2023.03.18 |
[★2][백준11382번 for JAVA] 꼬마 정민 (0) | 2023.03.18 |
댓글