Write a query identifying the type of each record in the TRIANGLES table using its three side lengths. Output one of the following statements for each record in the table:
SELECT
CASE
WHEN A + B <= C OR A + C <= B OR B + C <= A THEN "Not A Triangle"
WHEN A = B AND B = C THEN "Equilateral"
WHEN A = B OR A = C OR B = C THEN "Isosceles"
ELSE "Scalene"
END AS triangle_type
FROM TRIANGLES;
Basic 문제를 모두 풀고 처음 접한문제로, 삼각형 유형을 찾아 조회하는 문제로 재미있는문제다.
위 조건을 살펴보면
처음에는 조건의 논리적인 순서를 신경쓰지 않고 작성하여 문제에 통과하지 못했다.
조건의 논리적인 순서를 잘생각하고 순서에 맞춰 조건을 조회하도록 해야하며 조건의 순서는 다음과 같다.
1) A + B <= C OR A + C <= B OR B + C <= A 조건을 통해 주어진 변들이 삼각형을 형성할 수 있는지를 먼저 확인. ( Not A Triangle )
2) A = B AND B = C 조건을 통해 모든 변이 같은 경우를 확인. ( Equilateral )
3) A = B OR A = C OR B = C 조건을 통해 두 변이 같은 경우를 확인. 여기서는 "Isosceles"가 "Equilateral"보다 뒤에 오도록 해야한다 (Isosceles)
4)"Scalene"는 나머지 경우로, 모든 변이 서로 다른 경우 (Scalene)
2번과 3번의 순서가 중요한대 다음과 같은 경우가 있다고 해보자
A = 3, B = 3, C = 3인 경우:
Equilateral 조건: A = B AND B = C가 참이므로, 이 경우는 "Equilateral"로 분류
Isosceles 조건: 이 경우는 평가되지 않음.
A = 3, B = 3, C = 2인 경우:
Equilateral 조건: A = B AND B = C가 거짓이므로, 이 조건은 평가되지 않습니다.
Isosceles 조건: A = B가 참이므로, 이 경우는 "Isosceles"로 분류.
만약 그 순서가 3번이 먼저, 2번이 그 다음이라면
이처럼 그 순서에 따라 주어진 조건을 이등변삼각형, 정삼각형을 구분하는 경우가 달라질 수 있다.
이번 문제를 풀어보며 조건의 순서의 중요성에 대해서도 다시 한번 생각해보게 되었다.