[백준] 8393번 합 C / C++ 문제 풀이 for문

2019. 7. 5. 08:49알고리즘/백준

728x90
반응형

문제

n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오.

입력

첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다.

출력

1부터 n까지 합을 출력한다.


예제 입력 1

3


예제 출력 1

6


문제 풀이

#include<stdio.h>
int main(){
    int n;
    scanf("%d", &n);
    printf("%d", n*(n+1)/2);
}

간단한 알고리즘 중에 시간 복잡도를 설명할 때 많이 사용되는 문제입니다.

원래 같으면 for문을 사용하여 

#include<stdio.h>
int main(){
    int n, sum;
    scanf("%d", &n);
    for(int i = 1; i < n+1; i++){
     sum += i;
    }
    printf("%d", sum);
}

이렇게 구현을 했어야 하는데 처음 코드의 시간복잡도는 O(1)이기 때문에

n에 어떠한 값을 넣어도 알고리즘의 계산시간이 변하지 않지만,

밑의 for문은 같은 결과를 내더라도 n에 값에 따라 연산 시간이 더 오래걸릴 수 있습니다.

 

for문을 사용하라는 문제였지만 위의 코드가 더 좋은 코드라 판단하여 먼저 보여드려봤습니다.

 

출처 : https://www.acmicpc.net/problem/8393

 

8393번: 합

문제 n이 주어졌을 때, 1부터 n까지 합을 구하는 프로그램을 작성하시오. 입력 첫째 줄에 n (1 ≤ n ≤ 10,000)이 주어진다. 출력 1부터 n까지 합을 출력한다. 예제 입력 1 복사 3 예제 출력 1 복사 6...

www.acmicpc.net

 

728x90
반응형