-
[네이버클라우드 캠프/1주차] 트리 모양의 별네이버클라우드 캠프 | BE/Java 과제 2023. 3. 22. 17:07728x90
3/15(수) 네이버클라우드 캠프 4일 차에 풀이한 트리 모양의 별에 대해 풀이를 정리하고자 합니다.
어떻게 접근하는지... 더 쉽게 접근할 수 있는 방법이 있다면 댓글 부탁드립니다 :)
❓문제 : 다음과 같이 출력하세요.
저는 먼저 별들의 나열에서 규칙을 찾고 싶었습니다.
줄마다 띄어쓰기(" ")는 몇 개인지, 별은 몇 개 출력되고 있는지를 찾아 메모장에 정리하였습니다.
1번째 줄 : 띄어쓰기 4개, 별 1개 2번째 줄 : 띄어쓰기 3개, 별 3개 3번째 줄 : 띄어쓰기 2개, 별 5개 4번째 줄 : 띄어쓰기 1개, 별 7개 5번째 줄 : 띄어쓰기 0개, 별 9개 줄의 수가 1씩 증가함에 따라
띄어쓰기는 4부터 0까지 -1씩 감소, 별은 1부터 시작해 2개씩 증가하는 등차수열의 형태를 띠고 있습니다.
우리는 줄의 수, 띄어쓰기, 별의 출력을 위해 for문이 필요하며 중첩 for문을 사용해야 합니다. (다른 방법도 당연히 존재함)
바깥쪽 for문의 객체 i로 줄의 수를 제어하고,
그 안에는 띄어쓰기를 위한 for문과 별을 출력하기 위한 for문을 별도로 작성하였습니다.
for(int i = 1; i <= 5; i++) { for(int j = 5 - i; j >= 1; j--) { System.out.print(" "); } for(int k = 1; k <= 2*i-1; k++) { System.out.print("*"); } System.out.println(); }
바깥쪽 for문이 0부터 시작하여 1씩 증가함에 따라 (1, 2, 3, 4, 5)
for(int i = 1; i <= 5; i++) { }
안쪽의 띄어쓰기를 제어하는 for문은 4부터 시작하여 1씩 감소합니다. (4, 3, 2, 1, 0) = 5 - i
for(int i = 1; i <= 5; i++) { for(int j = 5 - i; j >= 1; j--) { System.out.print(" "); } }
또한 별을 제어하는 for문은 첫 시작 값이 1, 공차가 2인 등차수열로 1 + 2(i - 1) = 2i - 1
for(int i = 1; i <= 5; i++) { for(int j = 5 - i; j >= 1; j--) { System.out.print(" "); } for(int k = 1; k <= 2*i-1; k++) { System.out.print("*"); } System.out.println(); }
<최종 소스코드>
public class Main { public static void main(String[] args) { for(int i = 1; i <= 5; i++) { for(int j = 5 - i; j >= 1; j--) { System.out.print(" "); } for(int k = 1; k <= 2*i-1; k++) { System.out.print("*"); } System.out.println(); } } }
'네이버클라우드 캠프 | BE > Java 과제' 카테고리의 다른 글
[네이버클라우드 캠프/1주차] 배열 (feat.전화번호부) (0) 2023.03.22 [네이버클라우드 캠프/1주차] 배열의 출력 (0) 2023.03.22 [네이버클라우드 캠프/1주차] 369 게임 (0) 2023.03.20 [네이버클라우드 캠프/1주차] 가위바위보 게임 (0) 2023.03.20 [네이버클라우드 캠프/1주차] 구구단 게임 (0) 2023.03.20