Algorithm/01. 기본 알고리즘

1-2. 반복(Repetition)

찹키리 2020. 8. 30. 17:48

반복(Repetition)

: 어떤 조건이 성립하는 동안 처리(프로그램 명령문 또는 명령어의 집합)를 반복해 실행하는 것을 반복 구조라 하며,

일반적으로 루프(loop)라고 부른다.

 

 

1. while문 반복

・사전 판단 반복 구조: 실행 전 반복을 계속할지 판단한 뒤, 제어식의 평가값이 0이 아니면 프로그램 명령문이 반복

1)1부터 n까지의 정수 합 구하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class SumWhile {
    public static void main(String[] args) {
        
        //1부터 n까지의 정수 합 구하기
        Scanner stdIn = new Scanner(System.in);
        
        System.out.println("1부터 n까지의 합");
        System.out.println("n값을 입력하세요.");
        int n = stdIn.nextInt();
        
        int sum = 0;
        int i = 1;
        
        while(i <= n) {
            sum += i;
            i++;
        }
        
        System.out.println("1부터 " + n + "까지의 합: " + sum);
    }
}

 

 

 

 

 

 

2. for문 반복

하나의 변수를 사용할 때 적합한 반복문

1)1부터 n까지의 정수 합 구하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class SumFor {
    public static void main(String[] args) {
        
        Scanner stdIn = new Scanner(System.in);
        
        System.out.println("1부터 n까지 정수의 합");
        System.out.println("n값을 입력하세요.");
        int n = stdIn.nextInt();
        
        int sum = 0;
        
        for(int i = 1; i <= n; i++) {
            
            sum += i;
        }
        
        System.out.println("1부터 " + n + "까지의 합: " + sum);
    }
}

 

 

 

 

 

 

・do, while문(사후 판단 반복)

일단 do문을 한 번 실행한 뒤, while문의 조건에 따라 반복할 것인지를 판단

 

 

-양수만 입력하기

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class SumDoWhile {
    public static void main(String[] args) {
        
        Scanner stdIn = new Scanner(System.in);
        int n;
        
        System.out.println("1부터 n까지의 합");
        
        do {
            System.out.print("n의 값: ");
            n = stdIn.nextInt();
            
        } while(n <= 0);
        
        int sum = 0;
        
        for(int i = 1; i <= n; i++) {
            sum += i;
        }
        
        System.out.println("1부터 " + n + "까지의 합은: " + sum);
    }

 

변수 n의 값이 0이하면 반복 실행, do문이 종료될 때 n의 값은 반드시 양수여야 한다.

 

 

 

 

・구조적 프로그래밍

하나의 입구와 하나의 출구를 가진 구성 요소만을 계층적으로 배치해 프로그램을 구성하는 방법으로, 순차, 선택, 반복이라는 세 종류의 제어 흐름을 사용한다.

 

 

 

 

 

・다중 루프

반복 안에서 다시 반복을 수행하는 것도 가능하다.

 

-곱셈표 출력하기

 

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MultipleTable {
    public static void main(String[] args) {
        
        System.out.println("\t-----곱셈표-----");
        
        for(int i = 1; i <= 9; i++) {
            for(int j = 1; j <= 9; j++) {
                System.out.printf("%3d", i * j);
            }
            System.out.println();
        }
    }
}

 

 

 

 

 

-직각 이등변 삼각형 출력

: 이중 루프를 응용하면 기호를 사용해 삼각형이나 사각형 모양으로 출력할 수도 있다.

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class Triangle {
    public static void main(String[] args) {
        
        Scanner stdIn = new Scanner(System.in);
        int n;
        
        System.out.println("왼쪽 아래가 직각인 이등변 삼각형 출력");
        
        do {
            System.out.println("몇 단 삼각형입니까?: ");
            n = stdIn.nextInt();
            
        } while(n <= 0);
        
        for(int i = 1; i <= n; i++) {
            for(int j = 1; j <= i; j++) {
                System.out.print("*");
            }
            System.out.println();
        }
    }
}

 

 

 

*이런 도형 형태의 결과를 출력할 때는 행 루프(줄 바꿈) - 열 루프(한 행 안에서의 실행) 순서로 생각하면 쉽다.

'Algorithm > 01. 기본 알고리즘' 카테고리의 다른 글

1-1. 알고리즘(Algorithm)이란?  (0) 2020.08.23