본문 바로가기
C/Baekjoon

[BOJ] SISS 겨울방학 스터디 - 6주차

by 단월໒꒱ 2022. 2. 6.

#2908

[문제]

 

 

 

 

[코드]

 

#include <stdio.h>

int rev(int n) {
    int result = 0;
    
    while (n != 0) {
        result *= 10;
        result += n % 10;
        n /= 10;
    }
    
    return result;
}

int main() {
    int A, B, max = 0;
    
    scanf("%d %d", &A, &B);
    
    if (rev(A) > rev(B))
        max = rev(A);
    else
        max = rev(B);
    
    printf("%d\n", max);
}

 

 

 

[설명]

입력받을 두 수 A, B와 두 수 중에 큰 수를 저장할 max를 정수로 놓는다.

함수 rev를 선언하여 입력받은 수를 거꾸로 뒤집는다. (몫과 나머지 연산 이용)

조건문으로 rev 함수를 이용하여 구한 두 수를 비교하고 두 수 중에 큰 수를 max에 저장한다.

마지막으로 위의 과정을 통해 구한 max 값을 출력해준다.

 

 

 

#2920

[문제]

 

 

 

 

[코드]

 

#include <stdio.h>

int main() {
    int num[8], check = 0;
    
    for (int i = 0; i < 8; i++) {
        scanf("%d", &num[i]);
    }
    
    for (int i = 0; i < 7; i++) {
        if (num[i] < num[i+1])
            check += 2;
        else if (num[i] > num[i+1])
            check += 1;
    }
    
    switch (check) {
        case 14 : printf("ascending\n"); break;
        case 7 : printf("descending\n"); break;
        default : printf("mixed\n"); break;
    }
    
    return 0;
}

 

 

 

[설명]

입력 받은 수를 저장할 정수 배열 num과 나중에 케이스를 분류할 기준인 check를 정수로 놓는다.

반복문과 scanf 함수를 이용해서 입력받은 수를 num 배열에 저장한다.

반복문으로 입력받은 배열을 처음부터 끝까지 돌면서 앞에있는 수가 뒤에있는 수보다 작으면 check에 2를 더하고 그렇지 않으면 1을 더해주도록 한다.

switch문을 이용해서 위의 과정을 통해 값이 저장된 check를 기준으로 14일때 ascending, 7일때 descending, 둘 다 아닐 때 mixed를 출력한다.

 

 

 

#3052

[문제]

 

 

 

 

[코드]

 

#include <stdio.h>

int main() {

    int num[10], remain = 0, cnt = 0;
    int rm[42] = {0, };

    for (int i = 0; i < 10; i++) {
        scanf("%d", &num[i]);
    }

    for (int i = 0; i < 10; i++) {
        remain = num[i] % 42;
        rm[remain] += 1;
    }

    for (int i = 0; i < 42; i++) {
        if (rm[i] != 0) cnt += 1;
    }

    printf("%d\n", cnt);
}

 

 

 

[설명]

입력받을 수를 저장할 num 배열, 나머지 remain, 카운트 cnt, 나머지 배열 rm을 정수로 놓는다.

반복문과 scanf로 입력받은 수를 num 배열에 저장한다.

반복문으로 num 배열을 처음부터 끝까지 돌면서 저장된 값을 42로 나눠서 나온 나머지 값을 remain에 저장하고 rm 배열의 인덱스가 remain인 값에 1을 더해준다.

다시 반복문으로 rm 배열을 돌면서 값이 0이 아닌 경우 카운트값을 1씩 더해준다.

마지막으로 위의 과정을 통해 구한 cnt값을 출력한다.

 

 

 

댓글