반응형
    
    
    
  문제 출처 :
알고리즘 분석 :
문제를 보면 어떤 수가 주어졌을 때 최대 몇개의 수를 더하여 이 수를 만들 수 있을까이다.
예를들어 7이면 1 2 4로 만들 수 있고 10이면 1 2 3 4로 만들 수 있다.
200이면? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 까지 더하면 190이다.
하지만 여기서 19를 빼면 171인데 여기서 29를 더하면 된다.
느낌이 오면 이 문제는 해결이 가능하다.
그냥 1에서부터 계속 더해서 그 수보다 커지기 직전 값만 바꾸면 끝이다. 즉, 19를 29로만 바꾸면 된다고 생각하는 코드를 작성하면 된다.
소스 코드 :
| 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 | #include <stdio.h> long long int s, sum = 0; int main() {     int n;     int num = 0;     scanf("%lld", &s);     for (int i = 1; ; i++)     {         sum = sum + i;         if (sum > s)             break;         else             num++;     }     printf("%d", num); } //                                                        This source code Copyright is Crocus  //                                             Do you want to see more contents? click here >> | Crocus | 
반응형
    
    
    
  'Applied > 알고리즘 문제풀이' 카테고리의 다른 글
| [5988번] 홀수일까 짝수일까 (0) | 2016.07.10 | 
|---|---|
| [10610번] 30 (0) | 2016.07.09 | 
| [10829번] 이진수 변환 (0) | 2016.07.09 | 
| [10942번] 팰린드롬? (0) | 2016.07.06 | 
| [11047번] 동전 0 (Greedy Algorithm) (0) | 2016.07.05 |