일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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
- 이름 마스킹
- 오라클
- 모바일게임
- set
- React
- 원펀맨
- 리액트
- html
- JS
- JSX
- 자바
- Java
- 배열
- array
- 형변환
- spring
- forEach
- jQuery
- 자바스크립트
- JavaScript
- 개발
- 맛집
- url 치환
- Oracle
- JSTL
- SQL
- 스프링
- url 변환
- table
- 원펀맨: 최강의 남자
Archives
- Today
- Total
특별한 일상
[java] 다이아몬드 별찍기 본문
반응형
안녕하세요. 소다맛사탕입니다.
맨 처음 알고리즘 배울때 만들었던 다이아몬드..
추억이 되어버린 다이아몬드 모양 별찍기 코딩을 다시 해봤습니다.
System.out.print("다이아몬드의 줄 수를 입력 : ");
Scanner sc = new Scanner(System.in);
int line = sc.nextInt();
sc.nextLine();
// 다이아몬드 시작 맨처음 별
int star = 1;
int inLine = line; // 입력한 다이아몬드 줄을 설정함.
for(int i = 0; i < line; i++) {
for(int j = 0 ; j < inLine; j++) {
// 입력한 줄 수만큼 공백을 처리.
System.out.print(" ");
}
// 줄 수 만큼 별의 갯수를 표시.
for(int j = 0; j < star; j++){
System.out.print("*");
}
// 최상위 for문의 줄 수만큼 공백를 하나씩 지움.
inLine--;
star += 2; // 홀수개씩 증가.
System.out.println(" "); // 줄바꿈
}
// 다이아몬드 밑부분
for(int i = 0; i < line - 1; i++) {
for(int j = inLine + 2; j > 0; j--) { // 줄 수가 줄어듬.
// 입력한 줄 수만큼 공백처리
System.out.print(" ");
}
// 감소되는 줄 수만큼 별의 갯수를 표시.
for(int j = star - 4; j > 0; j--) {
System.out.print("*");
}
// 반대로 감소되는 줄 수만큼 공백을 하나씩 생성.
inLine++;
star -= 2; // 홀수개씩 감소.
System.out.println(" ");
}
위의 방법은 윗부분 다이아를 생성후에 중간을 기점으로 다이아 밑부분 다이아를 생성하는 방식입니다.
사실 코딩한 소스도 파악하기 힘들고, 함수를 씁시다.
그래서..
System.out.print("다이아몬드의 줄 수를 입력 : ");
Scanner sc = new Scanner(System.in);
int line = sc.nextInt();
sc.nextLine();
int height = line; // 다이아몬드 높이
if(height%2 == 0) { // 다이아몬드 높이 짝수면 안되므로.
height -= 1;
}
int star = (int)(height / 2); // 소수점 제거.
for(int i = 0; i<height; i++){
for(int j = 0; j<height; j++){
// 함수를 이용해 구현
if(star - Math.abs(star - i) >= Math.abs(star - j)){
System.out.print("*");
} else {
System.out.print(" ");
}
}
System.out.println();
}
Math.abs() 함수를 이용하여 더 깔끔하게 다이아를 생성할 수 있다.
'abs' 는 절대값을 반환하는 함수이다.
간단한듯 간단하지 않은거 같다..
'IT•개발 끄적 > Java' 카테고리의 다른 글
[java] JDK 환경변수 설정(java 환경변수 설정) (0) | 2021.04.11 |
---|---|
[java] JDK 설치하기(자바 개발도구 설치, JDK 1.8 =JDK 8.0) (0) | 2021.04.11 |
[java] String, StringBuffer, StringBuilder 차이점과 장단점 (0) | 2021.04.10 |
[java] 정수를 2진수로 변환 (0) | 2021.04.07 |
[java] 휴대폰 번호, 계좌번호, 이름 마스킹(masking) (2) | 2021.04.06 |
Comments