야나도 프로젝트

나도 개발자 될수있어

JAVA

알쏭달쏭자바200제 : 읽은 갯수만큼 별찍기

jmeen 2021. 8. 14. 18:29
728x90

읽은 갯수만큼 *을 찍어보자.

단, 5개 단위로 구분하여 찍어보자.

 

1차 내가 푼 방법

만약 14개를 찍어야 할 경우. 5개씩 두개를 찍고, 나머지 4개를 찍어야한다.

for문을 이용해서 풀었다.

public class Repeat {
	private static void q4_17() {	
        int num = 14;
        
		int for1 = num / 5;
		int for2 = (num % 5 != 0 ? 1 : 0);
        
  		for (int i = 0; i < for1; i++) {
			for (int j = 0; j < 5; j++) {
				System.out.print("*");
			}
			System.out.println();
		}

		if (for2 != 0) {
			for (int j = 0; j < num % 5; j++) {
				System.out.print("*");
			}
			System.out.println();
		}
    }
}

 

충격의 교재 풀이

public class Repeat {
	public static void main(String[] args) {
		q4_17();
	}
	private static void q4_17() {
		Scanner sc = new Scanner(System.in);
		int num = 14;
		int for1 = num / 5;
		int for2 = (num % 5 != 0 ? 1 : 0);

		for (int i = 0; i < num; i++) {
			System.out.print("*");
			if (i % 5 == 4) {
				System.out.println();
			}
		}

		if (num % 5 != 0) {
			System.out.println();
		}
   	 }
}

 

너무 충격이었다.

순서대로 계속 이어가다, 5번째가 되면 줄바꿈을 해라.

생각지도 못한 방법이었다. 

훨씬 코드가 간결하다. 

 

그리고 교재의 2번째 방법.

내가 푼것과 교재의 혼합이랄까.

import java.util.Scanner;
public class Repeat {
	public static void main(String[] args) {
		q4_17();
	}
	private static void q4_17() {
		Scanner sc = new Scanner(System.in);
		int num = 14;
		int for1 = num / 5;
		int for2 = (num % 5 != 0 ? 1 : 0);

		for (int i = 0; i < num / 5; i++) {
			System.out.println("*****");
		}
		
		if (num % 5 != 0) {
			for (int j = 0; j < num % 5; j++) {
				System.out.print("*");
			}
		}
	}
}

2번의 "*****"가 나타나야 하기때문에 이것을 /5 한 값을 반복한다. 

내 코드는 5개를 찍었지만, 굳이 찍을 필요가 없다는것.

 

그리고 나머지 4개는 순서대로 찍어준다. 

 

 

차근차근 더 공부해야겠다.

 

'JAVA' 카테고리의 다른 글

난수 중복 방지 알고리즘 - 2  (0) 2021.08.16
중복값 판단 알고리즘  (0) 2021.08.16
Servlet & JSP  (0) 2021.08.11
Java Network and Thread  (0) 2021.08.11
JDBC Programming - DAO (Data Access Object)  (0) 2021.08.11