개발자꿈나무
반복문 이용해서 구구단, 삼각형 별찍기 본문
- 구구단을 보기 좋게 구분선을 포함해서 출력해보자
public static void main(String[] args)
{
System.out.print(" |");
for(int i=1;i<=9;i++) {
System.out.printf("%3d",i);
}
System.out.println("\n---+---------------------------");
for(int i=1;i<=9;i++) {
System.out.printf("%2d |",i);
for(int j=1;j<=9;j++) {
System.out.printf("%3d",i*j);
}
System.out.println();
}
}
더보기
☆ 참고 ★
- 제일 첫 줄에서 " |"와 1 ~ 9까지 출력을 제일 먼저 구성해준다.
- 구분선 "---+---------------------------"을 출력해준다.
- 만약 이 값들이 이차원 배열의 값들이라고 생각했을 때, 1차원 배열의 값의 출력을 먼저 생각해본다.
위의 예제는 "숫자 |"이 i에서 출력되어야 하는 값들이다. - 이후 안의 값들은 j의 값들을 이용해서 흔히 우리가 아는 구구단 방식으로 출력해주면 된다.
- 구구단을 변형해서 덧셈표를 만들면 아래와 같다.
public static void main(String[] args)
{
System.out.print(" |");
for(int i=1;i<=9;i++) {
System.out.printf("%3d",i);
}
System.out.println("\n---+---------------------------");
for(int i=1;i<=9;i++) {
System.out.printf("%2d |",i);
for(int j=1;j<=9;j++) {
System.out.printf("%3d",i+j);
}
System.out.println();
}
}
- 입력받은 수를 한 변으로 하는 정사각형을 *로 출력하기
public static void main(String[] args)
{
Scanner src = new Scanner(System.in);
System.out.println("정사각형을 출력합니다.");
int square;
do {
System.out.println("변의 길이 : ");
square = src.nextInt();
} while(square<=0);
for(int i=0;i<square;i++) {
System.out.println("*".repeat(square));
}
}
//이러한 방법으로도 출력이 되지만, 메소드의 도움이 아니라 머리를 써서 다시 한번 풀어보자
public static void main(String[] args)
{
Scanner src = new Scanner(System.in);
System.out.println("정사각형을 출력합니다.");
int square;
do {
System.out.println("변의 길이 : ");
square = src.nextInt();
} while(square<=0);
for(int i=0;i<square;i++) {
for(int j=0;j<square;j++) {
System.out.print("*");
}
System.out.println();
}
}
- 직각이등변 삼각형 출력하기
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n;
System.out.println("이등변삼각형을 출력합니다.");
do {
System.out.println("몇 단 삼각형입니까? : ");
n = in.nextInt();
} while(n<=1);
for(int i=1;i<=n;i++) {
for(int j=1;j<=i;j++) {
System.out.print("*");
}
System.out.println();
}
}
더보기
☆ 참고 ★
행과 열의 갯수가 같음
- i가 1일 때, j를 1 -> 1로 증가시키면서 *를 출력하고 줄바꿈
- i가 2일 때, j를 1 -> 2로 증가시키면서 **를 출력하고 줄바꿈
- i가 3일 때, j를 1 -> 3로 증가시키면서 ***를 출력하고 줄바꿈
- i가 4일 때, j를 1 -> 4로 증가시키면서 ****를 출력하고 줄바꿈
- i가 5일 때, j를 1 -> 5로 증가시키면서 *****를 출력하고 줄바꿈
public class TriangleLB_1_17
{
//n단의 역직각삼각형
static void triangleLU(int n) {
for(int i=1;i<=n;i++) { //n만큼의 행을 출력해야함
for(int j=n;j>=i;j--) { //후치감소로 최대 n개의 길이에서 점차 하나씩 줄어들게끔
System.out.print("*");
}
System.out.println();
}
}
//오른쪽 위가 직각인 n단의 역직각삼각형 - 공백까지 생각해줘야해서 for문안에 for문이 두개 들어감
static void triangleRU(int n) {
for(int i=1;i<=n;i++) { //마찬가지로 n만큼 행 길이 출력
for(int j=1;j<i;j++) { //공백을 먼저 처리해줘야함. 1행은 공백이 없고 2행부터 하나씩 늘어가므로 j<i라고 범위 설정(또는 j<=i-1)
System.out.print(" ");
}
for(int j=n;j>=i;j--) { //위와 마찬가지로 *의 갯수가 하나씩 줄어드므로 후치감소 적용
System.out.print("*"); //후치증가로 표현하려면 int j=1;j<=n-i+1;j++로 설정
}
System.out.println();
}
}
//오른쪽 아래가 직각인 n단의 직각삼각형
static void triangleRB(int n) {
for(int i=1;i<=n;i++) { //마찬가지로 n만큼 행 길이 출력
for(int j=n;j>i;j--) { //반대로 공백이 점점 줄어드므로 후치감소에 마지막 행은 공백이 없으므로 j>i로 설정. 또는 j>=i+1로 설정
System.out.print(" "); //마찬가지로 위 식처럼 후치증가로 표현할 수도 있음.
}
for(int j=1;j<=i;j++) {
System.out.print("*");
}
System.out.println();
}
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n;
System.out.println("이등변삼각형을 출력합니다.");
do {
System.out.println("몇 단 삼각형입니까? : ");
n = in.nextInt();
} while(n<=1);
System.out.println("n단의 역직각삼각형");
triangleLU(n);
System.out.println("오른쪽 위가 직각인 n단의 역직각삼각형 ");
triangleRU(n);
System.out.println("오른쪽 아래가 직각인 n단의 직각삼각형 ");
triangleRB(n);
}
}
- '*'로 이루어진 정삼각형과, 숫자로 이루어진 정삼각형을 찍는 예제를 만들어보자
//정삼각형 출력
static void spira(int n) {
for(int i=1;i<=n;i++) {
for(int j=n;j>i;j--) {
System.out.print(" ");
}
for(int j=1;j<=(i-1)*2+1;j++) { //1 -> 3 -> 5 이런식으로 훌수 갯수만큼 출력이 돼야하므로 1+1 / 2+1 / 3+1 이렇게 되도록 범위 설정
System.out.print("*");
}
System.out.println();
}
// for (int j = 1; j <= n - i; j++) // n - i 개의 ' ' 을 출력
// System.out.print(' '); //후치증가 (위의 공백 출력을 증가로 표현할 수도 있음)
}
//정삼각형을 *이 아닌 숫자로 출력하기
static void npira(int n) {
for(int i=1;i<=n;i++) {
for(int j=1;j<=n-i;j++) { //후치증가로 공백 출력
System.out.print(" ");
}for(int j=1;j<=(i-1)*2+1;j++) { //* 대신 숫자를 출력해줘야 하므로 나머지 값을 출력
System.out.print(i%10);
}
System.out.println();
}
}
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
int n;
System.out.println("이등변삼각형을 출력합니다.");
do {
System.out.println("몇 단 삼각형입니까? : ");
n = in.nextInt();
} while(n<=1);
System.out.println("n단의 정삼각형 ");
spira(n);
System.out.println("n단의 숫자로 이루어진 정삼각형 ");
npira(n);
}
}
728x90
'알고리즘' 카테고리의 다른 글
1. 학생 이름, 학번 출력 프로그램 (0) | 2023.02.05 |
---|---|
배열 - 최댓값, 역순 정렬, 복사 (0) | 2023.01.30 |
반복 , 가우스의 덧셈 계산 (0) | 2023.01.29 |
순서도의 기호 (0) | 2023.01.29 |
조건 판단과 분기 (0) | 2023.01.29 |