백준

백준 5073번: 삼각형과 세 변 (C언어)

NamDoHyeon 2023. 9. 11. 23:04

백준 5073번: 삼각형과 세 변 링크

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

문제를 풀기 전 생각한 것

세 변의 길이가 모두 같은 경우
두 변의 길이만 같은 경우
세 변의 길이가 모두 다른 경우
가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않을 경우
0 0 0 입력 시 종료

풀면서 어려웠던 점

어려운 건 아니었고 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않을 조건에서 최대, 중간, 최소를 따로 구해서 최대 < (중간+최소)로 만들려고 했는데 생각해 보니 최대 < (전체-최대)를 하면 돼서 코드를 다시 짰다

코드

#include <stdio.h>

int main(void) 
{
    int side[3];

    while(1) {
        for (int i = 0; i < 3; i++){
            scanf("%d", &side[i]);
        }

        int max = side[0];

        for (int j = 0; j < 3; j++) {
            if (side[j] > max) max = side[j];
        }

        if (side[0] == 0 && side[1] == 0 && side[2] == 0) {
                break;
        } 

        if (side[0] == side[1] && side[0] == side[2] && side[1] == side[2]) {
            printf("Equilateral\n");
        } 

        else if ( max < (side[0] + side[1] + side[2] - max)){
            if (side[0] == side[1] || side[0] == side[2] || side[1] == side[2]) {
                printf("Isosceles\n");
            } 

            else printf("Scalene\n"); 
        }

        else printf("Invalid\n");
    }

    return 0;
}

풀면서 배운 점

상황이 복잡해지면 다른 방향으로 생각해 보자

반응형