[2438/JAVA] 별 찍기 - 1Knowledge/Algorithm2023. 12. 30. 11:28
Table of Contents
728x90
문제
첫째 줄에는 별 1개, 둘째 줄에는 별 2개, N번째 줄에는 별 N개를 찍는 문제
입력 조건
첫째 줄에 N(1 ≤ N ≤ 100)이 주어진다.
출력 조건
첫째 줄에서 N번째 줄까지 차례대로 별을 출력한다.
풀이
import java.util.Scanner;
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 = 0; j < i; j++) {
System.out.print("*");
}
System.out.println();
}
sc.close();
}
}
그러니까 내가 지정한 수가 5라고 하면 한줄씩 늘어날 때마다 별이 하나씩 추가가 되야하기 때문에 증감연산자를 넣어주었다.
그리고 for문을 두번 사용한 이유는 외부 for문은 1부터 시작해서 N까지 반복하면서, N번째 줄까지 별을 출력해야 할 줄 수를 정해주어야하기 때문이다. 그리고 내부 for문은 별을 찍는 역할을 해주어야하기 때문에 사용된다.
요약하면 외부 for문은 각 줄마다 몇 번 반복할지를 결정하고, 내부 for문은 해당 줄에 별을 실제로 몇 개 찍을지를 결정해주는 역할을 한다.
이렇게 사용하는 이유는 첫 번째 줄에는 별 1개, 두 번째 줄에는 별 2개, ..., N번째 줄에는 별 N개를 찍기위해서 이렇게 사용한다.
출력도 잘되고
잘 통과되었다.
증감연산자를 -로만 바꿔주면 역순으로도 출력이 가능해진다.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 사용자로부터 숫자 N을 입력받음
for (int i = N; i > 0; i--) { // N부터 1까지 반복 (역순)
for (int j = 0; j < i; j++) { // 각 줄마다 i개의 별을 찍음
System.out.print("*");
}
System.out.println(); // 별을 찍고 나서 줄바꿈
}
sc.close(); // Scanner 객체 닫기
}
}
대충 요렇게...? 출력이 된다.
정리
무지성으로 for문 2번은 구구단 이렇게 알고 있다가 내부 내용이 조금 바뀌니깐 뇌정지가 와버렸다.
자주 써봐야 늘텐데... 어디서 어떻게 써야할지도 모르겠고 감이 잘 안온다☹️
728x90
'Knowledge > Algorithm' 카테고리의 다른 글
[20304/JAVA] 영수증 (1) | 2024.01.05 |
---|---|
[2480/JAVA] 주사위 세개 (0) | 2024.01.02 |
[10872/JAVA] 팩토리얼 (0) | 2023.12.29 |
[10951/JAVA] A+B - 4 (0) | 2023.12.23 |
[2420/JAVA] 사파리월드 (1) | 2023.12.22 |
@Marty_ :: 소리 지르고 싶다.
쓰임 있는 사람이 되기 위해 노력 중입니다.