CodeUp C언어 기초 100제 [기초 - 종합] 1087~1091

jychan99·2021년 8월 19일
0
post-thumbnail
  1. 1, 2, 3 ... 을 순서대로 계속 더해나갈 때,

그 합이 입력한 정수보다 작을 동안만 계속 더하는 프로그램을 작성해보자.

즉, 1부터 n까지 정수를 계속 더한다고 할 때,
어디까지 더해야 입력한 수보다 같거나 커지는지 알아보고자 하는 문제이다.

하지만, 이번에는 그 때의 합을 출력해야 한다.

1080의 문제와 같은문제이나, 1080번에서는 더할때 입력한 수보다 커지는 수를 출력했다면,
이번에는 입력한 수보다 커지면 그때의 합을 출력한다.

#include <stdio.h>

int main()
{
    long x,sum=0,i=0;
    scanf("%ld",&x);
    while(1)
    {
        sum+=i;
        if(sum>=x)
        {
            printf("%d",sum);
            break;
        }
        i++;
    }

    return 0;
}

while(1) 무한루프에서 조건문으로 합이 입력값보다 커지면 출력하고 break로 빠져나오게하면 된다.

  1. 1부터 입력한 정수까지 1씩 증가시켜 출력하는 프로그램을 작성하되,
    3의 배수인 경우는 출력하지 않도록 만들어보자.

예를 들면,
1 2 4 5 7 8 10 11 13 14 ...
와 같이 출력하는 것이다.

#include <stdio.h>

int main()
{
    int x,i=0,sum=0;
    scanf("%d",&x);
    for(i=0;i<=x;i++)
    {
        sum+=i;
        if(i%3!=0)
        printf("%d ",i);
    }

    return 0;
}

역시 간단한 문제이다.
for 반복문에서 조건문으로 3의 배수가 아닐때만 출력하게 하면된다.

  1. 어떤 규칙에 따라 수를 순서대로 나열한 것을 수열(series)이라고 한다.

예를 들어
1 4 7 10 13 16 19 22 25 ... 은
1부터 시작해 이전에 만든 수에 3을 더해 다음 수를 만든 수열이다.
이러한 것을 수학에서는 앞뒤 수들의 차이가 같다고 하여

등차(차이가 같다의 한문 말) 수열이라고 한다.
수열을 알게 된 영일이는 갑자기 궁금해졌다.

"그럼.... 123번째 나오는 수는 뭘까?"

영일이는 프로그램을 만들어 더 큰 수도 자동으로 계산하고 싶어졌다.

시작 값(a), 등차(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때
n번째 수를 출력하는 프로그램을 만들어보자.

수열은 정해진 규칙이 있기때문에 프로그램하기 정말 편하다.

#include <stdio.h>

int main()
{
    int a,b,n,i,result;
    scanf("%d %d %d",&a,&b,&n);

    for(i=0;i<n-1;i++)
    a+=b;

    printf("%d",a);

    return 0;
}
  1. 시작 값(a), 등비(r), 몇 번째인지를 나타내는 정수(n)가 입력될 때
    n번째 수를 출력하는 프로그램을 만들어보자.

이번엔 등비수열이다. 역시 정말편하다.

#include <stdio.h>

int main()
{
    long a,r,n,i;
    scanf("%ld %ld %ld",&a,&r,&n);

    for(i=0;i<n-1;i++)
        a*=r;
    printf("%ld",a);

    return 0;
}
  1. 1 -1 3 -5 11 -21 43 ... 은
    1부터 시작해 이전에 만든 수에 -2를 곱한 다음 1을 더해 다음 수를 만든 수열이다.
    시작 값(a), 곱할 값(m), 더할 값(d), 몇 번째인지를 나타내는 정수(n)가 입력될 때,
    n번째 수를 출력하는 프로그램을 만들어보자.

규칙이 약간 복잡해졌지만 역시 똑같다.
반복문을돌려서 조건만 입력해주면 된다.

#include <stdio.h>

int main()
{
    long a,m,d,n,i;
    scanf("%ld %ld %ld %ld",&a,&m,&d,&n);

    for(i=0;i<n-1;i++)
        a=a*m+d;
    printf("%ld",a);

    return 0;
}

개인적으로 오히려 1085,1086문제가 더어려운듯

profile
내가 지금 두려워 하고 있는 일이 바로 내가 지금 해야 할 일이다. 🐍

0개의 댓글

관련 채용 정보