https://www.acmicpc.net/problem/1037

 

또 손가락이 심심해져서 이전에 하던 문제집을 이어서...

하다가 귀찮아져서 블로그에 글은 안썻던걸 이제 다시 쓴다

이전의 1이라는거의 다음 문제 약수이다.

문제 제목그대로 약수들을 입력받아서 이게 어떤 수의 약수인지 출력하라는 문젠데....

 

솔직히 기억이 안난다 뭔가 특성이 있었던거같은데

그래서 그냥 약수 구했던게 분명 약수가 두수를 곱해서 원본이 나오는거였을테인데 

잘 될지 모르지만 최소값, 최대값 구해서 둘을 곱해서 출력하고 보자라는 생각으로 돌진했건만

통과해버려서 솔직히 다른 예외가 있을지도 모르겠다

그래서 그 소스...

int solution(int size, int divisors[]) {
    int min = divisors[0];
    int max = divisors[0];
    
    for (int i = 0; i < size; i++) {
        int value = divisors[i];
        if (max < value) {
            max = value;
        }
        if (min > value) {
            min = value;
        }
    }
    return min * max;
}


int main(int argc, const char * argv[]) {
    int size;

    while (scanf("%d", &size) != EOF) {

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

        printf("%d\n", solution(size, divisor));
    }

    return 0;
}

 

메인부분은 저놈의 EOF 처리에 뭐하는짓인지 모르겠다

아무튼 글로 쓰기에도 너무 내용이 없어서 지피티짱에게 코드리뷰를 부탁해서 수정!

solution 부분은 워낙 간단하기도 해서 손댈만한 부분은 없었고

int main(void) {
    int size;

    while (scanf("%d", &size) == 1) {

        int *divisor = malloc(sizeof(int) * size);
        if (divisor == NULL) return 1;

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

        printf("%d\n", solution(size, divisor));
        
        free(divisor);
    }

    return 0;
}

 

메인 부분은 처음 divisor배열을 초기화할때 초과값이 올 수 도 있다고 malloc으로 잡아지는지 확인하고 진행한다.

물론 malloc이니 free를 써주고...

이런 방어적인 기법이 추가되면 왠지모르게 좀 기쁘다

 

 

아래는 레포지토리!

https://github.com/wiwi-git/c-baekjoon

 

GitHub - wiwi-git/c-baekjoon: 블로그 업데이트용 백준 코드

블로그 업데이트용 백준 코드. Contribute to wiwi-git/c-baekjoon development by creating an account on GitHub.

github.com

 

 

반응형

'C,C++' 카테고리의 다른 글

[C]백준 Q.17425 약수의 합 1  (0) 2025.12.14
[C]백준 Q.17427 약수의 합 2  (0) 2025.12.13
[C]백준 Q.4375 1  (0) 2025.12.11
[C]백준 Q.2839 설탕 배달  (0) 2025.12.07
[C]백준 Q.1924 2007년  (0) 2025.12.07

+ Recent posts