일단 이것저것 해 보는 블로그

(Do it! 자바, 1주차-2) 04장 되새김 문제 4~5번 풀이 (250108) 본문

2026/Do it Java 스터디(2026.01.~02.)

(Do it! 자바, 1주차-2) 04장 되새김 문제 4~5번 풀이 (250108)

뷔구룽 2026. 1. 9. 22:26

1주차 기록

(1주차) 자바 입문과 기초 문법 (251230~260106)

 

(1주차) 자바 입문과 기초 문법 (251230~260106)

개요원래 1월 5일부터 스터디 시작이지만, 호기심을 참지 못하고 전자책을 조금 일찍 구매해 공부를 시작했다.이번 글에는 그 1주차, 첫 시작에 대해 간략히(?) 기록해본다.1주차는, 자바 개발 환

gyeonkangkim.tistory.com

저번에 풀지 못했던 피라미드와 마름모 별 찍기 문제를 일단 풀어냈다. 사실 완전히 풀어냈다기보다는 예제 코드를 최대한 뜯어가며 원리를 파악하려고 애쓴 것에 더 가깝긴 하지만.

혼자서 잘 이해가 되지 않는 부분은 교재 출판사에서 제공하는 예제 코드를, 저자 강의 도움을 받아 분석해보며 보충했다.

 

사용한 학습 자료: 박은종, 2025, <Do it! 자바 프로그래밍 입문 [개정판]>, 이지스퍼블리싱.

https://ebook-product.kyobobook.co.kr/dig/epd/ebook/E000010942415

 

Do it! 자바 프로그래밍 입문 [개정판] | 박은종 저자

eBook Do it! 자바 프로그래밍 입문 [개정판] | 3만 6천 부 이상 팔린 초판의 성공에 힘입어 좀 더 입문자의 눈높이에 맞춰 내용을 수정하고 최신 개발 트렌드에 맞게 개정판을 출간했습니다. 저자인

ebook-product.kyobobook.co.kr

저자 강의: Do it! 자바 프로그래밍 입문 - YouTube (260109 최종접속)

 

Do it! 자바 프로그래밍 입문

 

www.youtube.com

재생목록 중 6~8번째 영상을 참고했다. 지금 읽고 있는 개정판이 아닌 구판 강의라 걱정했지만 다행히 문제가 동일해서 참고가 되었다.

 

Comment

(04번: 피라미드)

 

|   *   |

|  ***  |

| ***** |

|*******|

 

위 출력 결과를 내기 위해서, 도형을 총 3개 공간으로 나누어 생각해보았다.

 

1) 출력될 별의 왼쪽 공백

2) 실제 출력될 별

3) 별의 오른쪽 공백

 

총 4줄의 피라미드 도형에서, 각 항목 갯수를 표로 정리하면

줄 수 왼쪽 오른쪽
1 3 1 3
2 2 3 2
3 1 5 1
4 0 7 0

구체적으로 적어보면,

- 4줄을 출력해야 하므로 총 4번의 반복문 수행이 필요.

- 각 줄마다 좌우 공백과 별을 출력하는 기능도 필요.

- 따라서 4줄을 출력하는 외부 반복문 안에 각 줄마다 공백과 별을 출력하는 기능이 필요하므로, 총 3개의 내부 반복문을 더 사용해야 한다.

- 줄 수가 늘어날 수록 공백 개수는 각각 1개씩 줄어들고, 별 개수는 2개씩 늘어난다.

n줄의 공백 개수 -= (n-1)줄의 공백 개수 - 1

n줄의 별 갯수 += (n-1)줄의 별 개수 + 2

 

이를 토대로 코드를 분석한 결과 어느 정도 원리를 이해할 수 있었다. 앞으로는 생각날 때마다 복습하면서 익숙해지는 수밖에.

 

(실습 코드)

DoitJava_Studying_2026/chapter4/Review04.java at main · KimGyeonkang/DoitJava_Studying_2026

 

DoitJava_Studying_2026/chapter4/Review04.java at main · KimGyeonkang/DoitJava_Studying_2026

Contribute to KimGyeonkang/DoitJava_Studying_2026 development by creating an account on GitHub.

github.com

 

 

(05번: 마름모)

 

(출력 결과)

|   *   |

|  ***  |

| ***** |

|*******|

| ***** |

|  ***  |

|   *   |

 

기본적인 원리는 04번과 동일하나

5~7줄에서는 반대로 공백 개수가 각각 1개씩 늘어나고, 별 개수는 2개씩 줄어든다.

따라서 기존 내부 반복문에 코드를 추가할 필요가 있다(조건문 If~else문).

-> 1~4줄일 때

n줄의 공백 개수 = (n-1)줄의 공백 개수 - 1

n줄의 별 갯수 = (n-1)줄의 별 개수 + 2

그렇지 않으면

n줄의 공백 개수 = (n-1)줄의 공백 개수 + 1

n줄의 별 갯수 = (n-1)줄의 별 개수 - 2

 

(실습 코드)

DoitJava_Studying_2026/chapter4/Review05.java at main · KimGyeonkang/DoitJava_Studying_2026

 

DoitJava_Studying_2026/chapter4/Review05.java at main · KimGyeonkang/DoitJava_Studying_2026

Contribute to KimGyeonkang/DoitJava_Studying_2026 development by creating an account on GitHub.

github.com