C언어/백준

c언어) 백준 5073번 < 삼각형과 세 변 >

Nesun 2021. 5. 4. 00:00

백준 5073번 문제를 풀어보았다.

 

이미지 클릭시 문제로 이동

문제는 다음과 같다. 세 변의 길이를 입력 받고 비교 후 결과를 출력하는 문제이다.

 

 

진짜 짜증나네...

0 0 0 하면 계산하지 말라해서 그냥 다시 변수 입력받는 건 줄 알았는데 그냥 종료였다....

그래서 자꾸 이 난리였던거였음,,,


고려해야할 사항은 다음과 같다.

 

  1.  0 0 0 일 경우 반복문 종료
  2.  가장 긴 길이 값이 다른 두 값의 합보다 크거나 같은 경우 (Invalid)
  3. 세 변의 길이가 같은 경우 (Equilateral)
  4. 두 변의 길이만 같은 경우 (lsosceles)
  5. 세 변 모두 길이가 다른 경우 (Scalene)

 

  
  #include <stdio.h>

  int compare(i,j,k) {
      int max=0;
      if (i > j)
          max = i;
      else
          max = j;
      if (max <= k)
          max = k;
      return max;
  }

  void main() {

      int a, b, c;
      while (1) {
          int max = 0;
          scanf_s("%d %d %d", &a, &b, &c);

          if (a == 0 && b == 0 && c == 0)
              break;
          max = compare(a, b, c);
          if (max >= ((a + b + c) - max))
              printf("Invalid\n");
          else if (a == b && b == c)
              printf("Equilateral\n");
          else if (a == b || b == c || c == a)
              printf("Isosceles\n");
          else
              printf("Scalene\n");
      }
      return 0;
  }
  

완성된 코드를 제출해보았다.

 

조건 2를 자세히 설명해보면 세 값을 모두 더하고 max 값을 빼면 가장 긴 변의 길이를 뺀 두 변의 길이가 나오게 된다.

 

 

후...