일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 스프링부트
- spring
- java
- java생성자
- 명품자바
- 자바static
- java세팅
- 스프링세팅
- springsecurity
- springtoolsuite
- 비전공개발자
- 코드로배우는스프링부트웹프로젝트
- 코드로배우는스프링웹프로젝트
- spring세팅
- 자바세팅
- 자바별찍기
- 자바
- 자바계산기
- lombok설치
- eclipse
- 자바UTF-8
- springtoolsuite 설치
- springDI
- eclipseUTF-8
- springboot
- javaclass
- 스프링
- 스프링DI
- 구멍가게코딩단
- 자바인스턴스
Archives
- Today
- Total
딴따라 제퍼의 개발 유랑기
별찍기 java 예제 (for문 예제) 본문
저도 처음 했을 당시 머리 싸매며 풀었던 기억이 나네요.
가장 중요한것은 이중 for문에 대한 이해이고,
응용된 다른 모양의 별찍기를 하려면 i와 j의 상관관계(좌표)를 캐치하는것 이라고 생각합니다.
// MAX에 정사각형 크기 입력
for(int i=0; i<MAX; i++) {
for(int j=0; j<MAX; j++) {
if(j > i) break;
System.out.print("*");
}
System.out.println();
}
- 각 row를 반복하는 구역은 i, 각 column을 반복하는 구역은 j
- 별 출력하는 곳은 println()이 아닌 print()에 주의
// MAX에 정사각형 크기 입력
for(int i=0; i<MAX; i++) {
for(int j=MAX-i; j>0; j--) {
System.out.print("*");
}
System.out.println();
}
- j열의 조건이 다르고 증감식이 --로 가는점 외에는 비슷합니다.
for(int i=0; i<MAX; i++) {
if(i == 0 || MAX-i == 1) { // 첫번째행, 마지막행일때
for(int j=0; j<MAX; j++) {
System.out.print("*");
}
} else {
for(int j=0; j<MAX; j++) {
System.out.print(j == i || j == 0 || j == MAX-1 ? "*" : " ");
}
}
System.out.println();
}
- 첫번째 row와 마지막 row, 그것을 제외한 나머지 row로 나누어서 생각합니다.
- 가운데 별의 좌표를 먼저 파악해야 합니다.
- 그림처럼 별이 찍히는 좌표는
i가 1일때 && j가 1일때, i가 2일때 && j가 2일때............
결국 i == j 일때 별을 찍고, 처음 column과 마지막 column에 별을 찍으면 됩니다.
삼항 연산자로 해당 조건을 만족할때만 *을 출력하고 조건을 만족하지 않을시에
공백을 출력하게 하면 됩니다.
오랜만에 다시 해보니 헷갈리네용.. ;)
'Java' 카테고리의 다른 글
Java 개발 환경 세팅 (0) | 2021.01.27 |
---|---|
Static (0) | 2021.01.27 |
Class Constructor (생성자) (0) | 2021.01.27 |
Class (0) | 2021.01.27 |
Comments