C언어/백준

5073번, 14215번

twoweeks-within 2024. 11. 21. 18:46

5073번

 

1.가장 긴변에서 나머지 두변을 뺌

a + b + c - max_side <= max_side

 

어떤게 max_side 가 될지 모르니 ( max_side - a? b? c?) 

  > 전체 더한것에서 max_side 를뻄

 

1-1 ) 가장 긴 변의 길이보다 나머지 두 변의 길이의 합이 길지 않으면 삼각형의 조건을 만족하지 못한다. 

      ==  두변의 합은 나머지 한변보다는 무조건 길다

if (a + b <= c || a + c <= b || b + c <= a)

  작은 경우 > printf("Invalid\n");

 

 

 

14215번

 

1, 오름차순 정리 // 작은것부터 크도록

if (a > b) { int temp = a; a = b; b = temp; }
if (b > c) { int temp = b; b = c; c = temp; }
if (a > b) { int temp = a; a = b; b = temp; }

 

1-1 ) a 가 크면 a -> b , b -> a

"

1-3) 마지막에 a>b 를 한번 더 검사 > ( 위의 두 단계를 거치며 값 바뀐 것을 한번더 확인)

 

if (a + b > c) {
   printf("%d\n", a + b + c);
} else {
// 삼각형 조건이 만족되지 않으면 둘레 출력
    printf("%d\n", 2 * (a + b) - 1);
 }

 

작은 두변이 나머지 한변보다 크면 삼각형 -> a + b + c

else)  a+b <= c 인경우 :  c 를 (a+b) -1 만큼으로 줄여야 최대 삼각형 길이가됨

        >> a + b + a + b - 1 = 2* (a+b) -1

 

 

'C언어 > 백준' 카테고리의 다른 글

FIFO 메모리관리  (0) 2024.11.24
2789번, 2231번  (0) 2024.11.23
2581번, 11653번, 1085번, 3009번  (0) 2024.11.20
2869번, 5086번, 2501번, 9506번, 1978번  (0) 2024.11.19
1193번  (0) 2024.11.16