[백준] 2444번 별 찍기 - 7 Java 문제 풀이
2023. 3. 14. 18:25ㆍ알고리즘/백준
728x90
반응형
문제풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.*;
interface Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st;
int N = Integer.parseInt(br.readLine());
Stack<String> stack = new Stack<>();
for(int j=1; j <= N; j++) {
String str = "";
for (int i = 1; i <= N+j-1; i++) {
if(i <= N-j) {
sb.append(" ");
str += " ";
} else {
sb.append("*");
str += "*";
}
}
sb.append("\n");
str += "\n";
stack.push(str);
}
System.out.print(sb);
stack.pop();
while(!stack.isEmpty()) {
System.out.print(stack.pop());
}
}
}
위에 줄과 가운뎃줄은 StringBuilder를 통해 출력하고
나머지 밑에 줄은 Stack에 삽입했다가 순차적으로 삭제하며 출력했습니다.
규칙은
1. 첫째 줄은 N 개의 문자를 출력해야 하고 순차적으로 출력해야 하는 문자의 수가 1씩 증가합니다. (N+j-1 번씩 반복)
2-1. 각 줄마다 출력해야 하는 공백의 개수는 N-1 개 부터 1씩 감소합니다. (N-j 번씩 공백 출력)
2-2. 나머지는 별을 출력하면 됩니다.
스택을 그냥 출력하면 가장 긴 줄이 2번 출력되는 문제가 발생하므로 반복문 돌리기 전에 pop으로 삭제를 한 번 해줬습니다.
출처 : https://www.acmicpc.net/problem/2444
728x90
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 10988번 팰린드롬인지 확인하기 Java 문제 풀이 (0) | 2023.03.16 |
---|---|
[백준] 10812번 바구니 순서 바꾸기 Java 문제 풀이 (2) | 2023.03.15 |
[백준] 9086번 문자열 Java 문제 풀이 (0) | 2023.03.14 |
[백준] 10811번 바구니 뒤집기 Java 문제 풀이 (0) | 2023.03.14 |
[백준] 10813번 공 바꾸기 Java 문제 풀이 (0) | 2023.03.14 |