중첩 for문을 이용한 Java 별찍기 예제입니다.
1. 평범한 사각형 별 찍기
for(int i = 0 ; i < 3 ; i++) { // 행의 수
for(int j = 0 ; j < 4; j++) { // 열의 수
System.out.print("*");
}
System.out.println();
}
2. 삼각형 별 찍기
for(int i = 0 ; i < 4 ; i++) {
for(int j = 0 ; j < i ; j++) { // j가 i보다 작을 때만 *찍기
System.out.print("*");
}
System.out.println();
}
3. 뒤집어진 삼각형 별 찍기
for(int i = 0 ; i<4 ; i++) {
for(int j = 4 ; j>0 ; j--) { // j가 4부터 감소, j가 i보다 작을 때만 *찍기
if (j>i) {
System.out.print(" ");
} else {
System.out.print("*");
}
}
System.out.println();
}
4. 피라미드 별 찍기
int start_4 = 5/2; // 별의 시작 점 ( 중간부터 시작, n / 2 )
int end_4 = 5/2; // 별의 끝나는 점 ( 중간부터 시작, n / 2 )
for(int i = 0 ; i<4 ; i++) { //행의 수
for(int j = 0 ; j<5 ; j++) { //열의 수
if(j>start_4 && j<end_4) { // j가 start 보다 크고 end보다 작으면 * 아니면 공백
System.out.print("*");
} else {
System.out.print(" ");
}
}
start_4--; // start를 감소시키고 end를 증가시켜서 *을 넓게 찍는다.
end_4++;
System.out.println();
}
5. 마름모 별 찍기
// 마름모 상단부는 4번과 동일
int start_5 = 5/2;
int end_5 = 5/2;
for(int i = 0 ; i<4 ; i++) {
for(int j = 0 ; j<5 ; j++) {
if(j>start_5 && j<end_5) {
System.out.print("*");
} else {
System.out.print(" ");
}
}
start_5--;
end_5++;
System.out.println();
}
// 마름모 하단부
int start2_5 = 5 - (5-1); // 별이 시작되는 지점은 n - (n-1)
int end2_5 = 5 - 2; // 별이 끝나는 지점은 n - 2
for (int i = 0; i < 2; i++) {
for (int j = 0; j < 5; j++) {
if (j >= start2_5 && j <= end2_5) { // j가 start 이상이면서 end 이하면 *찍기
System.out.print("*");
} else {
System.out.print(" ");
}
}
start2_5++; // start를 증가시키고 end를 감소시켜서 *을 좁혀지게 찍는다.
end2_5--;
System.out.println();
}
6. 사용자 입력받아 마름모 별 찍기
//6번
System.out.print("6번 문제의 별 수를 입력하세요.(홀수) : ");
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
Solution6(n);
public static void Solution6(int n) {
int startPoint = n/2; //별의 시작점
int endPoint = n/2; //별의 끝나는 점
int row = n; //행의 수
int mid = n/2; //중간 수
for (int i = 0; i < row; i++) { //행만큼 반복
for (int j = 0; j < n; j++) { //찍을 별의 수만큼 반복
if (j >= startPoint && j <= endPoint) { //시작점보다 크고 끝점보다 작으면 별찍기
System.out.print("*");
} else {
System.out.print(" ");
}
}
if (i < mid) { // 별의 윗부분을 위해 Point를 증감시키는 if문
startPoint--;
endPoint++;
} else if (i >=mid) { // 별의 아랫부분을 위해 Point를 증감시키는 if문
startPoint++;
endPoint--;
}
System.out.println();
}
}
'Java > 코딩테스트 연습 & 실습' 카테고리의 다른 글
[Java] 이진검색 재귀함수로 구현하기 (0) | 2022.07.13 |
---|---|
[Java] (실습) Baby-gin (1) | 2022.07.11 |
[Java] (실습) 자바 정돈된 수 (0) | 2022.07.11 |
[Java] (실습) 자바 로또 프로그램 (0) | 2022.07.11 |
[Java] (실습) 가장 작은 수로 변환 (0) | 2022.07.11 |