백준 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;
}
풀면서 배운 점
상황이 복잡해지면 다른 방향으로 생각해 보자
반응형