728x90
반응형
* 공부 목표
입출력 - 2557, 1000, 2558, 10950, 10951, 10952, 10953, 11021, 11022, 11718, 11719, 11720, 11721, 2741, 2742, 2739, 1924, 8393, 10818, 2438, 2439, 2440, 2441, 2442, 2445, 2522, 2446, 10991, 10992
- 2445번
문) 예제를 보고 규칙을 유추한 뒤에 별을 찍어 보세요.

** 풀이
: 중첩 for문으로 시도했다가 배열 사용하면 좋겠다는 생각이 듦.
1. 배열로 오름차순 정렬되어 있는 것 만든 후
2. 새로운 배열에 깊은 복사한 다음, 뒤집어 출력(Arrays.sort(, Comparator.reverseOrder());)
- (문제 발생) .clone(); 으로 복사하니, 맨 마지막 공백 없는 줄(형광펜)이 반복되어서 출력.
- (해결) .copyOfRange(); 를 통해 복사 범위 지정하였음.
// 이 경우에는 시작 점은 고정이니, copyOf(); 를 써도 무관할 것 같다.
1) Scanner 활용
import java.util.*;
public class Main{
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
sc.close();
String[] star = new String[N];
String[] Rstar = new String[N-1];
for(int j=1; j<N+1; j++) {
star[j-1] = "*".repeat(j) + " ".repeat(N-j) + " ".repeat(N-j) + "*".repeat(j);
System.out.println(star[j-1]);
}
Rstar = Arrays.copyOfRange(star, 0, N-1);
Arrays.sort(Rstar, Comparator.reverseOrder());
for(int z=0; z<N-1; z++) {
System.out.println(Rstar[z]);
}
}
}
2) BufferedReader + BufferedWriter // 메모리는 조금 차이 났고, 시간은 거의 반토막 수준.
import java.util.*;
import java.io.*;
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();
String[] star = new String[N];
String[] Rstar = new String[N-1];
for(int j=1; j<N+1; j++) {
star[j-1] = "*".repeat(j) + " ".repeat(N-j) + " ".repeat(N-j) + "*".repeat(j);
bw.write(star[j-1] + "\n");
}
Rstar = Arrays.copyOfRange(star, 0, N-1);
Arrays.sort(Rstar, Comparator.reverseOrder());
for(int z=0; z<N-1; z++) {
bw.write(Rstar[z] + "\n");
}
bw.flush();
bw.close();
}
}
'알고리즘' 카테고리의 다른 글
[백준] 입출력 - 2446번, 별찍기 9 (0) | 2023.03.20 |
---|---|
[백준] 입출력 - 2552번, 별찍기 12 (0) | 2023.02.23 |
[백준] 입출력 - 2442, 별찍기5 (0) | 2023.02.16 |
[백준] - 2441, 별찍기4 (0) | 2023.02.14 |
[백준] - 2440 별찍기3 (0) | 2023.02.13 |