-
[백준 알고리즘/Java] 2439번 별 찍기 - 2IT Study/백준 알고리즘 2023. 3. 14. 10:46728x90
문제를 풀기에 앞서, 별이 출력되는 원리(?)에 대해 알아보도록 하겠습니다.
<원리>
5 입력 시,
4칸 공란 + 1개 별
3칸 공란 + 2개 별
...
0칸 공란 + 5개 별10칸 입력 시,
9칸 공란 + 1개 별
8칸 공란 + 2개 별
...
0칸 공란 + 10개 별<과정>
1. 입력하는 값 n만큼 반복되어 한 줄씩 출력 (변수 n 선언 및 for문 사용)
import java.util.*; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); // 입력 받는 변수 n int n = sc.nextInt(); for(int i = 1; i <= n; i++) { // n번 반복하여 n줄 출력 } } }
이 때는 BufferedReader, BufferedWriter 사용할 줄 몰랐습니다...
2. 공란(" ") 출력
<예시>
n = 5, i = 1 일 때
첫 줄에서는 공란이 4개 출력되어야 한다.
∴ j = 1부터 j = 5 - 1 (n - i) 4번 반복n = 5, i = 2 일 때
두 번째 줄에는 공란이 3개 출력되어야 한다.
∴ j = 1부터 j = 5 - 2 (n - i) 3번 반복import java.util.*; public 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 j = 1; j <= n-i; j++) { // 공란 출력 System.out.print(" "); } } } }
3. 별("*") 출력
<예시>
n = 5, i = 1 일 때
첫 줄에서는 별이 1개 출력되어야 한다.
∴ k = 1부터 k = 1 (i) 1번 반복n = 5, i = 2 일 때
두 번째 줄에는 별이 2개 출력되어야 한다.
∴ k = 1부터 k = 2 (i) 2번 반복import java.util.*; public 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 j = 1; j <= n-i; j++) { System.out.print(" "); } for(int k = 1; k <= i; k++) { // 별 출력 System.out.print("*"); } } } }
4. 한 줄 출력 후 띄어쓰기
import java.util.*; public 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 j = 1; j <= n-i; j++) { System.out.print(" "); } for(int k = 1; k <= i; k++) { System.out.print("*"); } System.out.println(); // 한 줄 띄어쓰기 } } }
<최종 제출본>
import java.util.*; public 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 j = 1; j <= n-i; j++) { System.out.print(" "); } for(int k = 1; k <= i; k++) { System.out.print("*"); } System.out.println(); } } }
2439번 문제를 풀며, 제가 앞으로 고쳐야 할 부분에 대해 알게 되었습니다..
<고쳐야 하는 것들 (ft. 이상한 고집)>
1. for문의 초기화식(int i, j, k 등..)을 0으로 초기화하려고 한다.
2. for문의 조건식에 =(등호)를 포함하지 않으려고 한다.'IT Study > 백준 알고리즘' 카테고리의 다른 글
[백준 알고리즘] 첫 사용법 (초기 컴파일 오류, 언어 설정하기) (0) 2023.03.20 [백준 알고리즘/Java] 10811번 바구니 뒤집기 (0) 2023.03.14 [백준 알고리즘/Java] 15552번 빠른 A+B (0) 2023.03.13 [백준 알고리즘/Java] 2480번 주사위 세개 (0) 2023.03.13 [백준 알고리즘/Java] 2525번 오븐시계 (0) 2023.03.13