Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- do-while문
- 아두이노
- oracle설치
- 아두이노 스타터 키트
- 자바
- switch-case문
- 틴커캐드
- 아두이노 시뮬레이션
- Tinkercad
- DB설치
- 오라클
- 반복문
- sql설치
- for문
- Oracle
- 스위치봇
- 이중for문
- 삼항연산자
- Arduino
- java
- if-else if-else문
- 적외선 센서
- 팅커캐드
- 오라클설치
- if문
- 최솟값
- 아두이노 만들기
- if-else문
- 적외선 리모컨
- 아두이노 시뮬레이터
Archives
- Today
- Total
Rami's 개발기록
[별 찍기] for문을 이용한 다양한 별 찍기 본문
자바를 배울 때 맨 처음 HelloWrold를 출력해보듯이
for문을 배우면 항상 빠지지 않는 별 찍기를 해보려고 한다.
기초적인 문제지만 막상 해보려고 하면 은근히 헷갈려
고민하게 되기 때문에 기록해보고자 한다.
① | ② | ③ | ④ | ⑤ | ⑥ |
★ ★★ ★★★ ★★★★ ★★★★★ |
★★★★★ ★★★★ ★★★ ★★ ★ |
★ ★★ ★★★ ★★★★ ★★★★★ |
★★★★★ ★★★★ ★★★ ★★ ★ |
★ ★★★ ★★★★★ ★★★★★★★ ★★★★★★★★★ |
★★★★★★★★★ ★★★★★★★ ★★★★★ ★★★ ★ |
이렇게 6가지 유형의 별 찍기를 해볼 것이다.
별 찍기의 기본원리를 1번 유형을 기준으로 설명해보자면
별 찍기는 이중 for문으로 구현되는데
1열 ↓ |
2열 ↓ |
3열 ↓ |
4열 ↓ |
5열 ↓ |
|
1행 → |
★ | ||||
2행 → |
★ | ★ | |||
3행 → |
★ | ★ | ★ | ||
4행 → |
★ | ★ | ★ | ||
5행 → |
★ | ★ | ★ | ★ | ★ |
i 행으로 들어가서 j 열만큼 (별이 찍혀야 하는 열만큼) 반복한다.
쉽게 말하면 외부 for문은 별을 몇 줄 출력할지,
내부 for문은 별을 몇 개 출력할지 라고 생각하면 될 것 같다.
for (int i = 0; i < 5; i++) { // 행
for (int j = 0; j < i+1; j++) { // 열
// i가 0일 때 j가 1 (1행일 때 ★ 1개)
// i가 1일 때 j가 2 (2행일 때 ★ 2개) ...
// 이런식으로 진행되기 때문에 조건이 j < i+1 이렇게 된다.
System.out.print("★");
}
System.out.println(); // 한 줄 출력 후 줄바꿈
}
②번 별 찍기
★★★★★
★★★★
★★★
★★
★
for (int i = 0; i < 5; i++) {
for (int j = 5; j > i; j--) {
// i가 0일 때 j가 5 (1행일 때 ★ 5개)
// i가 1일 때 j가 4 (2행일 때 ★ 4개) ...
// 이런식으로 진행되기 때문에 조건이 j는 5부터 시작해서 j > i 까지 하나씩 줄어든다.
System.out.print("★");
}
System.out.println();
}
③번 별 찍기
★
★★
★★★
★★★★
★★★★★
for (int i = 0; i < 5; i++) {
for (int k = 4; k > i; k--) { // 2번 별 찍기와 동일
System.out.print(" "); // 공백은 'ㄱ'+한자 키 특수문자로 처리해주었다.
} // 내부 for문은 공백을 출력하는 for문과 별을 출력하는 for문으로 구성된다.
for (int j = 0; j < i+1; j++) { // 1번 별 찍기와 동일
System.out.print("★");
}
System.out.println();
}
④번 별 찍기
★★★★★
★★★★
★★★
★★
★
for (int i = 0; i < 5; i++) {
for (int k = 0; k < i; k++) { // 0, 1, 2, 3, 4번 공백 찍기
System.out.print(" ");
}
for (int j = 5; j > i; j--) { // 2번 별 찍기와 동일
System.out.print("★");
}
System.out.println();
}
⑤번 별 찍기
★
★★★
★★★★★
★★★★★★★
★★★★★★★★★
int num = 1;
for (int i = 0; i < 5; i++) {
for (int k = 4; k > i; k--) { // 3번 별 찍기와 동일
System.out.print(" ");
}
for (int j = 0; j < num; j++) { // 별이 1, 3, 5, 7, 9번 출력되어야 하므로 변수를 하나 만든다.
System.out.print("★");
}
num = num + 2; // 1, 3, 5, 7, 9번 출력될 수 있도록 변수에 2를 더해주어 계속 홀수로 만들어준다.
System.out.println();
}
⑥번 별 찍기
★★★★★★★★★
★★★★★★★
★★★★★
★★★
★
int num = 9;
for (int i = 0; i < 5; i++) {
for (int k = 0; k < i; k++) { // 4번 별 찍기와 동일
System.out.print(" ");
}
for (int j = num; j > 0; j--) { // 9, 7, 5, 3, 1번 출력되어야 하므로 줄어드는 형태의 조건이 된다.
System.out.print("★");
}
num = num - 2; // 9, 7, 5, 3, 1번 출력될 수 있도록 변수에 2를 빼서 계속 홀수로 만들어준다.
System.out.println();
}
프로그래밍을 배우는 중인 예비 개발자입니다.
잘못된 내용이나 고치고 싶은 부분이 있다면
지나치지 마시고 댓글로 남겨주시면
감사드리겠습니다😊
반응형
'개발기록 > java' 카테고리의 다른 글
[배열] 최댓값 최솟값 구하기 (0) | 2021.06.14 |
---|---|
[조건문] if, if-else, if-else if-else, switch-case문 (0) | 2021.06.01 |
[반복문] while, do-while, for문 (2) | 2021.05.31 |
Oracle JDK 설치 및 환경 변수 설정하기 (0) | 2021.05.25 |
Comments