C언어/programmers

[programmers] 삼각형 완성조건(1)

이렁부너 2024. 9. 2. 20:11

삼각형 완성조건(1)

/*
* 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
* 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
* 삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다.
* 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
*/

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

// sides_len은 배열 sides의 길이입니다.
int solution(int sides[], size_t sides_len) {
    int answer = 0;                                 // 결과를 저장할 변수
    int max = sides[0];                             // 배열에서 가장 큰 값을 저장할 변수 (초깃값은 배열의 첫번째 값으로 설정)
    int sum = 0;                                    // 최댓값을 제외한 나머지 두 변의 합을 저장할 변수

    // 배열을 순회하면서 최댓값을 찾고, 동시에 전체 변의 합을 계산
    for (int i = 0; i < sides_len; i++){
        if (sides[i] > max){                        // 현재 값이 max보다 크다면 max를 갱신
            max = sides[i];
        }
        sum += sides[i];                            // 모든 변의 길이를 합산
    }
    
    sum -= max;                                     // 전체 합에서 최댓값을 제외하여 나머지 두 변의 합을 계산

    // 삼각형을 만들 수 있는지 판단
    if (max < sum){                                 // 최댓값이 나머지 두 변의 합보다 작다면 answer에 1 대입
        answer = 1;
    }
    else {                                          // 그렇지 않다면 2를 대입
        answer = 2;
    }

    return answer;  // 결과 반환
}

/*
* 선분 세 개로 삼각형을 만들기 위해서는 다음과 같은 조건을 만족해야 합니다.
* 가장 긴 변의 길이는 다른 두 변의 길이의 합보다 작아야 합니다.
* 삼각형의 세 변의 길이가 담긴 배열 sides이 매개변수로 주어집니다.
* 세 변으로 삼각형을 만들 수 있다면 1, 만들 수 없다면 2를 return하도록 solution 함수를 완성해주세요.
*/

#include <stdio.h>
#include <stdbool.h>
#include <stdlib.h>

int solution(int sides[], size_t sides_len);

int main(void)
{
    int sides[3];
    int sides_len = 3;
    
    for (int j = 0; j < sides_len; j++){
        printf("Enter the size : ");
        scanf("%d", &sides[j]);
    }

    int result = solution(sides, sides_len);

    if (result == 1){
        printf("A triangle can be formed.");
    }
    else if(result == 2){
        printf("A triangle can't be formed.");
    }
}

// sides_len은 배열 sides의 길이입니다.
int solution(int sides[], size_t sides_len) {
    int answer = 0;                                 // 결과를 저장할 변수
    int max = sides[0];                             // 배열에서 가장 큰 값을 저장할 변수 (초깃값은 배열의 첫번째 값으로 설정)
    int sum = 0;                                    // 최댓값을 제외한 나머지 두 변의 합을 저장할 변수

    // 배열을 순회하면서 최댓값을 찾고, 동시에 전체 변의 합을 계산
    for (int i = 0; i < sides_len; i++){
        if (sides[i] > max){                        // 현재 값이 max보다 크다면 max를 갱신
            max = sides[i];
        }
        sum += sides[i];                            // 모든 변의 길이를 합산
    }
    
    sum -= max;                                     // 전체 합에서 최댓값을 제외하여 나머지 두 변의 합을 계산

    // 삼각형을 만들 수 있는지 판단
    if (max < sum){                                 // 최댓값이 나머지 두 변의 합보다 작다면 answer에 1 대입
        answer = 1;
    }
    else {                                          // 그렇지 않다면 2를 대입
        answer = 2;
    }

    return answer;  // 결과 반환
}