알고리즘/코드업 C알고리즘

코드업 알고리즘 문제 41~80

홍박스 2021. 3. 31. 03:26
728x90

1040 : [기초-산술연산] 정수 1개 입력받아 부호 바꿔 출력하기(설명)

입력된 정수의 부호를 바꿔 출력해보자.
단, -2147483647 ~ +2147483647 범위의 정수가 입력된다.

 

#include <stdio.h>

int main()

{

    int a;

    scanf("%d", &a);

    printf("%d", -a);

    return 0;

}

1042 : [기초-산술연산] 정수 2개 입력받아 나눈 몫 출력하기(설명) 

정수 2개(a, b) 를 입력받아 a를 b로 나눈 몫을 출력해보자.
단, -2147483648 <= a <= b <= +2147483647, b는 0이 아니다.

 

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", a/b);

    return 0;

}

1043 : [기초-산술연산] 정수 2개 입력받아 나눈 나머지 출력하기(설명)

정수 2개(a, b) 를 입력받아 a를 b로 나눈 나머지를 출력해보자.
단, 0 <= a, b <= +2147483647, b는 0이 아니다.

 

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", a%b);

    return 0;

}

1044 : [기초-산술연산] 정수 1개 입력받아 1 더해 출력하기(설명)

정수를 1개 입력받아 1만큼 더해 출력해보자.
단, -2147483648 ~ +2147483647 의 범위로 입력된다.

 

#include <stdio.h>

int main()

{

    long long int a;

    scanf("%lld", &a);

    printf("%lld", ++a);

    return 0;

}

 

+long long 에 대해서 알게되었다.

1045 : [기초-산술연산] 정수 2개 입력받아 자동 계산하기

정수 2개(a, b)를 입력받아 합, 차, 곱, 몫, 나머지, 나눈 값을 자동으로 계산해보자.
단 0 <= a, b <= 2147483647, b는 0이 아니다.

 

#include <stdio.h>

int main()

{

    long long int a, b;

    scanf("%lld %lld", &a, &b);

    printf("%lld\n", a+b);

    printf("%lld\n", a-b);

    printf("%lld\n", a*b);

    printf("%lld\n", a/b);

    printf("%lld\n", a%b);

    printf("%.2lf\n", (float)a/(float)b);

    return 0;

}

 

+형변환에 대해서 배울 수 있었다.

1046 : [기초-산술연산] 정수 3개 입력받아 합과 평균 출력하기

정수 3개를 입력받아 합과 평균을 출력해보자.
단, -2147483648 ~ +2147483647

 

#include <stdio.h>

int main()

{

    int a, b, c;

    float result = 0;

    scanf("%d %d %d", &a, &b, &c);

    printf("%d\n", a+b+c);

    result = a+b+c;

    printf("%.1lf\n", result/3);

    return 0;

}

+초기화를 해주는것과 안해주는 것의 차이

= 초기화를 안하면 쓰래기 값이 들어간다 추후에 해줄게 아니라면 해주는게 맞다.

1047 : [기초-비트시프트연산] 정수 1개 입력받아 2배 곱해 출력하기(설명) 

정수 1개를 입력받아 2배 곱해 출력해보자.

#include <stdio.h>

int main()

{

    int a;

    scanf("%d", &a);

    printf("%d", 2*a);

    return 0;

}

++비트연산으로 하는 배곱

#include <stdio.h>
int main()
{
    int a;
    scanf("%d", &a);
    printf("%d\n",a << 1);
    return 0;
}

 

<<의 1은 2배 한 값이 출력되고 >>의 1은 /2배한 값이 출력된다. 

그럼 2은? 4배 한값이 출력된다 

그럼 3은? 8배 한 값이 출력된다.

1048 : [기초-비트시프트연산] 한 번에 2의 거듭제곱 배로 출력하기(설명)

정수 2개(a, b)를 입력받아 a를 2b배 곱한 값으로 출력해보자.
0 <= a <= 10, 0 <= b <= 10

예) 1 3 이 입력되면 1을 2^3배 하여 출력

#include <stdio.h>

int main()

{

    int a,b;

    scanf("%d %d", &a,&b);

    printf("%d", a<<b);

    return 0;

}

 

c에선^가 XOR이다...

1049 : [기초-비교연산] 두 정수 입력받아 비교하기1(설명) 

두 정수(a, b)를 입력받아

a가 b보다 크면 1을, a가 b보다 작거나 같으면 0을 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main()

{

    int a,b;

    scanf("%d %d", &a,&b);

    printf("%d", a>b);

    return 0;

}

1050 : [기초-비교연산] 두 정수 입력받아 비교하기2(설명) 

두 정수(a, b)를 입력받아
a와 b가 같으면 1을, 같지 않으면 0을 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main()

{

    int a,b;

    scanf("%d %d", &a,&b);

    printf("%d", a==b);

    return 0;

}

1051 : [기초-비교연산] 두 정수 입력받아 비교하기3(설명)

두 정수(a, b)를 입력받아
b가 a보다 크거나 같으면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main()

{

    int a,b;

    scanf("%d %d", &a,&b);

    printf("%d", a<=b);

    return 0;

}

1052 : [기초-비교연산] 두 정수 입력받아 비교하기4(설명)

두 정수(a, b)를 입력받아
a와 b가 서로 다르면 1을, 그렇지 않으면 0을 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main()

{

    int a,b;

    scanf("%d %d", &a,&b);

    printf("%d", a!=b);

    return 0;

}

1053 : [기초-논리연산] 참 거짓 바꾸기(설명)

1(true, 참) 또는 0(false, 거짓) 이 입력되었을 때
반대로 출력하는 프로그램을 작성해보자.

#include <stdio.h>

int main()

{

    int a;

    scanf("%d", &a);

    printf("%d", !a);

    return 0;

}

1054 : [기초-논리연산] 둘 다 참일 경우만 참 출력하기(설명)

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", a&&b);

    return 0;

}

1055 : [기초-논리연산] 하나라도 참이면 참 출력하기(설명)

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", a||b);

    return 0;

}

1056 : [기초-논리연산] 참/거짓이 서로 다를 때에만 참 출력하기(설명)

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", a^b);

    return 0;

}

1057 : [기초-논리연산] 참/거짓이 서로 같을 때에만 참 출력하기

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", !(a^b));

    return 0;

}

1058 : [기초-논리연산] 둘 다 거짓일 경우만 참 출력하기

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", !(a||b));

    return 0;

}

+!(a&&b) == ||

1059 : [기초-비트단위논리연산] 비트단위로 NOT 하여 출력하기(설명) 

입력 된 정수를 비트단위로 참/거짓을 바꾼 후 정수로 출력해보자.
비트단위(bitwise)연산자 ~ 를 붙이면 된다.(~ : tilde, 틸드라고 읽는다.)

#include <stdio.h>

int main()

{

    int a;

    scanf("%d", &a);

    printf("%d", ~a);

    return 0;

}

1060 : [기초-비트단위논리연산] 비트단위로 AND 하여 출력하기(설명) 

입력된 정수 두 개를 비트단위로 and 연산한 후 그 결과를 정수로 출력해보자.

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", a&b);

    return 0;

}

예를 들어 3과 5가 입력되었을 때를 살펴보면
3       : 00000000 00000000 00000000 00000011
5       : 00000000 00000000 00000000 00000101
3 & 5 : 00000000 00000000 00000000 00000001

1063 : [기초-삼항연산] 두 정수 입력받아 큰 수 출력하기(설명)\

입력된 두 정수 a, b 중 큰 값을 출력하는 프로그램을 작성해보자.
단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.

조건식 ? (참일 때의 값) : (거짓일 때의 값)

#include <stdio.h>

int main()

{

    int a, b;

    scanf("%d %d", &a, &b);

    printf("%d", a>b?a:b);

    return 0;

}

1064 : [기초-삼항연산] 정수 3개 입력받아 가장 작은 수 출력하기(설명)

입력된 세 정수 a, b, c 중 가장 작은 값을 출력하는 프로그램을 작성해보자.
단, 조건문을 사용하지 않고 3항 연산자 ? 를 사용한다.

(a>b ? a:b)>c ? (a>b ? a:b):c == 큰수

a<b ? (a<c?a:c) : (b<c?b:c) == 작은 수

#include <stdio.h>

int main()

{

    int a, b, c;

    scanf("%d %d %d", &a, &b, &c);

    printf("%d", a<b ? (a<c?a:c) : (b<c?b:c));

    return 0;

}

1065 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝수만 출력하기(설명)

#include <stdio.h>
int main()
{
    int a, b, c;
    scanf("%d%d%d", &a, &b, &c);
    if(a%2 == 0) printf("%d\n", a);
    if(b%2 == 0) printf("%d\n", b);
    if(c%2 == 0) printf("%d\n", c);
    return 0;
}

1066 : [기초-조건/선택실행구조] 정수 3개 입력받아 짝/홀 출력하기(설명)

#include <stdio.h>

int main()

{

    int a, b, c;

    scanf("%d %d %d", &a, &b, &c);

    if (a%2==0) {

        printf("%s\n", "even");

    }else{

        printf("%s\n", "odd");

    }

    if (b%2==0) {

        printf("%s\n", "even");

    }else{

        printf("%s\n", "odd");

    }

    if (c%2==0) {

        printf("%s\n", "even");

    }else{

        printf("%s\n", "odd");

    }

 

    return 0;

}

1067 : [기초-조건/선택실행구조] 정수 1개 입력받아 분석하기(설명)

정수 1개가 입력되었을 때, 음(minus)/양(plus)과 짝(even)/홀(odd)을 출력해보자.

#include <stdio.h>

int main()

{

    int a;

    scanf("%d", &a);

    if (a%2==0) {

        printf("%s\n", "even");

    }else{

        printf("%s\n", "odd");

    }

    if (a>0) {

        printf("%s\n", "plus");

    }else{

        printf("%s\n", "minus");

    }

    return 0;

}

1068 : [기초-조건/선택실행구조] 정수 1개 입력받아 평가 출력하기(설명)

#include <stdio.h>
int main()
{
    int a;
    scanf("%d", &a);

    if(a >= 90) printf("A\n");
    else if(a >= 70) printf("B\n");
    else if(a >= 40) printf("C\n");
    else printf("D\n");
   
    return 0;
}

1069 : [기초-조건/선택실행구조] 평가 입력받아 다르게 출력하기(설명)

평가를 문자(A, B, C, D, ...)로 입력받아 내용을 다르게 출력해보자.

평가 내용
평가 : 내용
A : best!!!
B : good!!
C : run!
D : slowly~
나머지 문자들 : what?

#include <stdio.h>

int main()
{
    char a;
    scanf("%c",&a);

    switch(a)
    {
        case 'A': printf("best!!!"); break;
        case 'B': printf("good!!"); break;
        case 'C': printf("run!"); break;
        case 'D': printf("slowly~"); break;
        default: printf("what?");
    }
 
    return 0;
}

1070 : [기초-조건/선택실행구조] 월 입력받아 계절 출력하기(설명) 

#include <stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    switch(a)
    {
        case 12:
        case 1:
        case 2:printf("winter");break;
        case 3:
        case 4:
        case 5:printf("spring");break;
        case 6:
        case 7:
        case 8:printf("summer");break;
        case 9:
        case 10:
        case 11:printf("fall");break;
         
    }
 
    return 0;
}

1071 : [기초-반복실행구조] 0 입력될 때까지 무한 출력하기1(설명)

#include <stdio.h>

int main()

{

    int a=0;

    while (1) {

        scanf("%d", &a);

        if (a!=0) {

            printf("%d\n",a);

        }else

            break;

    }

    return 0;

}

1072 : [기초-반복실행구조] 정수 입력받아 계속 출력하기(설명) 

n개의 정수가 순서대로 입력된다.
-2147483648 ~ +2147483647, 단 n의 최대 개수는 알 수 없다.

n개의 입력된 정수를 순서대로 출력해보자.

#include <stdio.h>

int main()

{

    int a=0;

    int c=0;

    scanf("%d", &a);

    for (int b=0; b<a; b++) {

        scanf("%d", &c);

        printf("%d\n", c);

        

    }

    return 0;

}

1076 : [기초-반복실행구조] 문자 1개 입력받아 알파벳 출력하기(설명) 

#include <stdio.h>
int main()
{
    char n;
    scanf("%c", &n);
    for(char i='a'; i<=n; i++)
     printf("%c ",i);
    return 0;
}

1078 : [기초-종합] 짝수 합 구하기(설명) 

#include <stdio.h>
int main()
{
    int n, i, s=0;

    scanf("%d", &n);
    for(i=1; i<=n; i++)
        if(i%2==0)
         s+=i;
    printf("%d", s);
    return 0;
}

1079 : [기초-종합] 원하는 문자가 입력될 때까지 반복 출력하기

#include <stdio.h>

int main()
{
    char a;
    while(1)
    {
        scanf("%c ", &a);
        if(a != 'q') printf("%c\n",a);
        else {
            printf("q");
            return 0;
        }
    }
}

1080 : [기초-종합] 언제까지 더해야 할까?

1, 2, 3 ... 을 계속 더해 나갈 때,
그 합이 입력한 정수(0 ~ 1000)보다 같거나 작을 때까지
계속 더하는 프로그램을 작성해보자.

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

#include <stdio.h>

int main()

{

    int a, c=0;

    int i;

    scanf("%d", &a);

    for (i=1; ; i++) {

        c += i;

        if (a <= c) {

            break;

        }

    }

    printf("%d", i);

    return 0;

}

728x90