반응형
접근 방법)
이 문제를 보고 이중 for문을 이용하여 별을 출력해야하는 것을 인지해야한다.
그리고 절반까지는 별이 점차 많아지고, 절반 이후부터 점차 줄어들기 때문에 이중 for문을 2개 만들어야한다는 생각부터 코드를 시작할 수 있다.
정답 코드 1)
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 1; i <= n; i++){
for(int a = 1; a <= n-i; a++){
System.out.print(" ");
}
for(int b = 1; b <= (2*i)-1; b++){
System.out.print("*");
}
System.out.print("\n");
}
for(int k = 1; k <= n-1; k++){
for(int a = 1; a <= k; a++){
System.out.print(" ");
}
for(int b = 1; b <= 2*(n-k)-1; b++){
System.out.print("*");
}
System.out.print("\n");
}
}
}
이렇게 출력 횟수 for문 안에서 띄어쓰기와 * 횟수를 출력할 for문을 또 만들어야한다.
점차 많아지는 for문 한 개 점차 줄어드는 for문 한 개로 총 2개 이중 for문을 작성하여 문제를 풀었다.
그리고 TMI이지만 처음에 띄어쓰기 출력 후, * 출력후, 다시 띄어쓰기가 출력되어있는 문제인줄 알고
아래와 같이 for문안에 for문을 3개씩 구현해놓았었다.
import java.util.*;
class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for(int i = 1; i <= n; i++){
for(int a = 1; a <= n-i; a++){
System.out.print(" ");
}
for(int b = 1; b <= (2*i)-1; b++){
System.out.print("*");
}
for(int c = 1; c <= n-i; c++){
System.out.print(" ");
}
System.out.print("\n");
}
for(int k = 1; k <= n-1; k++){
for(int a = 1; a <= k; a++){
System.out.print(" ");
}
for(int b = 1; b <= 2*(n-k)-1; b++){
System.out.print("*");
}
for(int c = 1; c <= k; c++){
System.out.print(" ");
}
System.out.print("\n");
}
}
}
그리고 제출 후 처음보는 '출력 형식이 잘못되었습니다.' 라는 메세지를 보고 당황을 많이 하였다.
위 처럼 뜨는 이유가 출력값은 일치하지만 불필요한 공백과 같은 것이 들어가 있기에 오류가 발생하는 것이였다.
아래 사진 처럼 출력값은 똑같아 보이지만 불필요한 공백에 의해 정답처리가 되지 않았다.
반응형
'Baekjoon 자바 코드 > 심화1' 카테고리의 다른 글
[백준] 2941번 크로아티아 알파벳 풀이 코드 (Java 자바) (0) | 2024.05.02 |
---|---|
[백준] 1157번 단어 공부 풀이 코드 (Java 자바) (0) | 2024.04.30 |
[백준] 10988번 팰린드롬인지 확인하기 풀이 코드 (Java 자바) (0) | 2024.04.24 |
[백준] 3003번 킹, 퀸, 룩, 비숍, 나이트, 폰 풀이 코드 (Java 자바) (0) | 2024.04.22 |
[백준] 25083번 새싹 풀이 코드 (Java 자바) (0) | 2024.04.22 |