반응형
문제 출처 :
알고리즘 분석 :
문제를 보면 어떤 수가 주어졌을 때 최대 몇개의 수를 더하여 이 수를 만들 수 있을까이다.
예를들어 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 |