본문 바로가기
자료구조 | 알고리즘/공부

반복1. 1부터 n 까지의 정수 합 구하기

by 동기 2021. 10. 6.
반응형

 

프로그램의 흐름을 반복하는 간단한 알고리즘을 살펴보자

 

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

 

    public int sum(int n){// 1부터 n 까지의 합 구하기
        int sum=0;

        for(int i=1; i<=n; i++) {
            sum += i;
        }

        return sum;
    }
    
    @Test
    public void sum(){//1부터 n 까지 정수의 합 구하기
        int n = 10;
        System.out.println("1부터"+n+"까지의 합:"+sum(n));
    }

 

 

어떤 조건이 성립하는 동안 처리(프로그램 명령문 또는 명령어의 집합)를 반복하여 실행하는 것을 반복(repetition) 구조라 하며 일반적으로 루프(loop) 라고 부른다.

while 문 또는 for문은 실행 전에 반복을 계속할지를 판단하는데, 이런 구조를 '사전 판단 반복 구조' 라고 부른다.

제어식의 평갓값이 0이 아니면 프로그램 명령문이 반복 된다.

 

 

*하나의 변수를 사용하는 반복문은 while문 보다 for문을 사용하는 것이 좋다.

        //for문
        for(int i=1; i<=n; i++) {
            sum += i;
        }

        
        //while 문
        int i = 1;
        while(i<n){
            sum += i;
            i++;
        }

 

 

🦊Q7. 1부터 n 까지의 합을 구하고, '1+2+3+...+n = (합)' 으로 출력하는 프로그램을 작성하시오

    @Test //Q7 1부터 n 까지 정수의 합 구하기
    public void sum(){
        int n = 10;
        sum(n);
    }
    
    public void sum(int n){// 1부터 n 까지의 합 구하기
        int sum = 0;

        for (int i = 1; i <= n; i++) {
            if(i < n)
                System.out.print(i + " + ");
            else
                System.out.print(i);
            sum += i;
        }
        System.out.println(" = " + sum);
    }

 

🦊Q8. 가우스의 덧셈이라는 방법을 이용하여 1부터 n까지의 정수 합을 구하는 프로그램을 작성하세요.

가우스 덧셈: 맨 앞의 정수와 맨 뒤의 정수를 더해나가는 방식

1 + 2 + 3 + 4 + ... + 97 + 98 + 99 + 100 = ?

 

1 + 100 = 101

2 + 99 =  101

3 + 98 = 101

.

.

.

50 + 51 = 101

(1 + 100) * (100 /2)

    @Test // 가우스 덧셈을 이용하여 1부터 n까지의 정수의 합
    public void gausSum(){
        int n = 10;
        gausSum(n);
    }
    public void gausSum(int n){
        int sum = 0;

        sum = (1+n)*(n/2)+(n%2==0?0:(1+n)/2); //만약 정수의 개수가 홀수라면 남은 1개의 홀수를 더한다

        System.out.println("1부터"+n+"까지의 합 :"+sum);
    }

 

🦊Q9. 정수 a,b를 포함하여 그 사이의 모든 정수의 합을 구하여 반환하는 아래 메서드를 작성하세요

    @Test//정수 a,b를 포함하여 그 사이의 모든 정수의 합을 반환하는 sumof 메서드를 작성하세요. a,b 의 대소에 상관없이
    public void sumof(){
        int a = 10;
        int b = 10;
        sumof(a,b);
    }
    public void sumof(int a, int b){
        int sum = 0;
        int min = 0;
        int max = 0;

        if(a>b){
            min = b;
            max = a;
        }
        else if(a==b){
            System.out.println("a와 b가 같습니다.");
            min = a;
            max = b;
        }else{
            min = a;
            max = b;
        }
        System.out.println("min: "+min+", max: "+max);
        for(int i = min; i<=max; i++){
            sum += i ;
        }
        if(a==b){
            sum=0;
        }

        System.out.println(min+"과"+ max+"의 사이의 정수의 합: "+sum);
    }

 

 

 

반응형

'자료구조 | 알고리즘 > 공부' 카테고리의 다른 글

반복2. 양수만 입력하기  (0) 2021.11.02
기본 알고리즘  (0) 2021.10.06

댓글