2024. 10. 4. 02:07ㆍJava
저번에 for문에서 설명하지 못한 이중 for 문에 대해서 알아보자.
1) 공백과 별의 개수 변화를 확인하여 문제를 풀어야한다.
2) 각각의 for문이 어떠한 결과를 출력해야하는지를 먼저 생각해보고 문제를 풀어보자.
Quiz 01 해당 모양을 만들어보자.
(단, 사이즈는 5로 지정한다. )
* * * * *
* * * *
* * *
* *
*
tip >
각 행 마다 공백과 별이 몇개씩 출력되어야하는지를 먼저 파악한다.
별찍기는 기본적으로 어떠한 규칙이 있다.
따라서 공백과 별의 개수의 변화를 찾는 것이 우선이다.
public class Star {
public static void main(String[] args) {
// 공백(고정) 별 (공백에 따라 별의 개수를 변경)
// # # # # # 0 5
// # # # # 1 4
// # # # 2 3
// # # 3 2
// # 4 1
// 규칙 >> += 1 -= 1
int size = 5;
int star = size;
int space = 0;
for (int i = 0; i < size ; i++) {
// star = size - i; // i 에 따른 별의 개수
for (int j = 0; j < space; j++) {
System.out.print(" ");
}
for (int j = 0; j < star; j++) { // 출력할 개수는 무조건 star까지
System.out.print("* ");
}
System.out.println();
star -= 1;
space += 1;
}
}
}
Quiz 02
이번에는 사용자에게 사이즈에 대한 입력을 받아서, 처리해보자.
입력값에 따라, 출력되는 별의 크기가 달라져야한다.
ex) 5를 입력했을때
*
**
***
****
*****
tip >
기본적으로 오른쪽 정렬하려면, 공백과 별의 개수를 알아내야한다
한 줄 단위로 공백과 별이 몇개들어가는지 먼저 파악한 후
한 줄이 끝난다면 줄바꿈을 해주자
import java.util.Scanner;
public class Star {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt(); // 사용자에게 개수를 전달받는다
for(int i = 1; i <= count; i++) {
int num = count - i;
for(int j = 0; j < num; j++) { // 5 , 4 , 3 , 2 , 1
System.out.print(" "); // 한 줄 안에서 먼저 나오는 글자의 개수
}
for (int j = 1; j < i + 1; j++) { // 0 , 1 , 2 , 3, 4
System.out.print("*"); // 한 줄 안에서 나중에 나오는 글자의 개수
}
// System.out.printf("\t%d, %d", num , i); // 개수 확인용
System.out.println(); // 한줄의 출력이 끝나면 줄을 바꾼다
}
}
}
공백과 별의 개수 변화를 파악했다해도, 어떻게 처리할지 막막했었는데, 각 for문이 어떠한 역할을 하는지를 먼저 생각하고 접근하고자 노력했다. for문의 구조가 어떤식으로 작동하는지를 정확히 알게된다면 별찍기는 쉽게 느껴질 것이다.
아직 구조에 대해 잘 모르겠다면,
표를 만들어서 개수 변화를 파악하거나, 문제 옆에 주석으로 개수 변화를 파악하는 것이 중요하다.
tip >>
i 를 사용하는 for문은 전체 열을 출력하는 for문
j 를 사용하는 for문은 전체 행을 출력하는 for문
j for 문은 별과 공백을 출력한다.
-> i for 문 내부에 존재하여야함.
i for 문은 j의 출력이 끝나고 나면, 한줄띄워주는 역할을 수행한다.
-> 다음줄로 넘어가야하기 때문
'Java' 카테고리의 다른 글
[Java] Exception (0) | 2024.10.04 |
---|---|
[Java] function 함수 (0) | 2024.10.04 |
[Java] Stirng 함수와 Luhn 알고리즘 feat.신용카드번호 (0) | 2024.10.04 |
[Java] 자바의 반복문 - for, while (1) | 2024.10.04 |
[Java] 자바의 조건문 if ~ else, switch case (0) | 2024.10.04 |