Algorithm/Baekjoon
[백준] 2439번 : 별 찍기 - 2 - Java
unknownomad
2022. 2. 22. 15:45
https://www.acmicpc.net/problem/2439
2439번: 별 찍기 - 2
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
참고 유형
https://unknownomad.tistory.com/102
[백준] 2438번 : 별 찍기 - 1 - Java
https://www.acmicpc.net/problem/2438 2438번: 별 찍기 - 1 첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 www.acmicpc.net 알고리즘 for ( int i = 1 ; i <= N ; i++ ) { //행 개..
unknownomad.tistory.com
알고리즘
for (int i = 1; i <= N; i++) { //행 개수
for(int j = 1; j <= N-i; j++) { //각 행마다의 공백 개수
print(" "); //각 행의 공백 출력, println() 절대 안 됨!
}
for(int k = 1; k <= i; k++) { //각 행마다의 별 개수
print("*"); //각 행의 별 출력, println() 절대 안 됨!
}
}
구현 방법
입력
- Scanner
- BufferedReader + StringTokenizer / String.charAt()
* 자료형 타입 주의!
* st.nextToken(): 문자열 반환 ➡ Integer.parseInt()로 int형으로 변환시켜야 함
출력
- System.out.println()
- BufferedWriter
* BufferedWriter.write(): 단독으로 int형 값만 넣으면 아스키 코드값으로 인식되기에 다른 문자가 출력됨
➡ 반드시 문자열과 int형을 함께 넣어야 int값 제대로 출력 - StringBuilder
풀이
1. Scanner
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int N = in.nextInt();
in.close();
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N - i; j++) {
System.out.print(" ");
}
for (int k = 0; k < i; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
2. BufferedReader
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
int N = Integer.parseInt(br.readLine());
br.close();
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N - i; j++) {
System.out.print(" ");
}
for (int k = 1; k <= i; k++) {
System.out.print("*");
}
System.out.println();
}
}
}
3. BufferedReader + BufferedWriter
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
int N = Integer.parseInt(br.readLine());
br.close();
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N - i; j++) {
bw.write(" ");
}
for (int k = 1; k <= i; k++) {
bw.write("*");
}
bw.newLine();
}
bw.flush();
bw.close();
}
}
4. BufferedReader + StringBuilder
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
int N = Integer.parseInt(br.readLine());
br.close();
for (int i = 1; i <= N; i++) {
for (int j = 1; j <= N - i; j++) {
sb.append(" ");
}
for (int k = 1; k <= i; k++) {
sb.append("*");
}
sb.append("\n");
}
System.out.print(sb);
}
}
성능
- BufferedReader > Scanner
- BufferedWriter / StringBuilder > System.out.println()