2439번: 별 찍기 - 2
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제 하지만, 오른쪽을 기준으로 정렬한 별(예제 참고)을 출력하시오.
www.acmicpc.net
반복문이라면 항상 언급되는 별찍기~
처음엔 삼각형만 하는 것도 헷갈렸는데 기본 별찍기를 베이스로 다양한 모양으로도 만들 수 있었다👍🏻
아래는 내가 이해한 걸 그림으로 표현한 것. 까먹거나 헷갈리면 또 보자😂
N이 입력되면 n번째 줄에 별 n개가 입력되어야 한다.
💡여기선 반대모양이니 공백도 생각해야함!
n번째 줄에서 공백은 N에서 별 갯수 n개를 제외한 수만큼 출력된다. (N-n개)
별은 n번째 줄에 맞는 갯수 그대로 출력되면 됨.
바깥 for문에서 다음 줄로 넘어가게끔 해주고 안쪽 for문 두개로 공백과 별문자를 출력해주면 된다!
(머릿속에 있는 걸 설명하려니 횡설수설...)
1. BufferedReader와 StringBuilder 이용
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class BackJoon {
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());
for (int i = 1; i <= N; i++) {
for (int j = N - i; j >= 1; j--) {
sb.append(" ");
}
for (int j = 0; j < i; j++) {
sb.append("*");
}
sb.append("\n");
}
System.out.println(sb);
}
}
2. BufferedReader와 BufferedWriter 이용
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
public class BackJoon {
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 = N - i; j >= 1; j--) {
bw.write(" ");
}
for (int k = 0; k < i; k++) {
bw.write("*");
}
bw.write("\n");
}
bw.flush();
bw.close();
}
}
BufferedWriter는 잘 안써봐서 이번에 두 방법으로 사용해봤는데 아직은 어떤 차이가 있는지 정확히는 모르겠다.. 모르는게 아직 많다🤔
'Algorithm' 카테고리의 다른 글
[백준] 2588번: 곱셈 (1) | 2023.04.18 |
---|---|
[백준] 킹, 퀸, 룩, 비숍, 나이트, 폰 (0) | 2023.02.12 |
[프로그래머스] 배열의 평균값 (0) | 2023.02.03 |
[프로그래머스] 각도기 (0) | 2023.02.01 |
댓글