난이도: Bronze 2
프로그래밍 언어: Java
문제명: 전북대학교
푼일자: 2021년 5월
주소: https://www.acmicpc.net/problem/14624
문제풀기
몇번 테스트 후 쉽게 푼 문제였습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
import java.util.Scanner;
public class question_14624 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
sc.close();
if (a % 2 == 0) {
System.out.println("I LOVE CBNU");
} else {
for (int i = 0; i < a; i++) System.out.printf("*");
System.out.printf("\n");
int c = Math.round(a / 2) + 1;
for (int i = 0; i < c; i++) {
if (i == 0) System.out.println(getSpace(a / 2) + "*");
else {
int center = (i == 1) ? i : i * 2 - 1;
System.out.println(getSpace(a / 2 - i) + "*" + getSpace(center) + "*" );
}
}
}
}
public static String getSpace(int count) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < count; i++) sb.append(" ");
return sb.toString();
}
}
|
cs |
조금 더 최적화를 진행한 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
import java.util.Scanner;
public class question_14624 {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int a = sc.nextInt();
sc.close();
if (a % 2 == 0) {
System.out.println("I LOVE CBNU");
} else {
System.out.println(getStackString(a, "*"));
int c = Math.round(a / 2) + 1;
for (int i = 0; i < c; i++) {
if (i == 0) System.out.println(getStackString(a / 2, " ") + "*");
else {
int center = (i == 1) ? i : i * 2 - 1;
System.out.println(getStackString(a / 2 - i, " ") + "*" + getStackString(center, " ") + "*" );
}
}
}
}
public static String getStackString(int count, String str) {
StringBuilder sb = new StringBuilder();
while(count-- != 0) sb.append(str);
return sb.toString();
}
}
|
cs |
실제로 메모리와 시간이 조금 줄어든 모습을 볼 수 있었습니다.
반응형