[SQL] Type of Triangle

순동·2022년 4월 14일
0

✅ Type of Triangle


📝 문제

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:

  • Equilateral : It's a triangle with 3 sides of equal length.
  • Isosceles : It's a triangle with 2 sides of equal length.
  • Scalene : It's a triangle with 3 sides of differing lengths.
  • Not A Triangle : The given values of A, B, and C don't form a triangle.

Input Format

The TRIANGLES table is described as follows:

Each row in the table denotes the lengths of each of a triangle's three sides.

Sample Input

Sample Output

Isosceles
Equilateral
Scalene
Not A Triangle

Explanation


💻 풀이

SELECT
(CASE
    WHEN A = B AND B = C THEN 'Equilateral'
    WHEN A + B <= C OR B + C <= A OR A + C <= B THEN 'Not A Triangle'
    WHEN A = B OR A = C OR B = C THEN 'Isosceles'
    ELSE 'Scalene'
END)
FROM TRIANGLES;

📝 설명

⭐ 표시가 된 부분에 주목하자.

10 10 10 Equilateral
11 11 11 Equilateral
30 32 30 Isosceles
40 40 40 Equilateral
20 20 21 Isosceles
21 21 21 Equilateral
20 22 21 Scalene
20 20 40 Not A Triangle ⭐
20 22 21 Scalene
30 32 41 Scalene
50 22 51 Scalene
20 12 61 Not A Triangle
20 22 50 Not A Triangle
50 52 51 Scalene
80 80 80 Equilateral

💻 오답

SELECT
(CASE
    WHEN A = B AND B = C THEN 'Equilateral'
    WHEN A = B OR A = C OR B = C THEN 'Isosceles'
    WHEN A + B <= C OR B + C <= A OR A + C <= B THEN 'Not A Triangle'
    ELSE 'Scalene'
END)
FROM TRIANGLES;

💻 정답

SELECT
(CASE
    WHEN A = B AND B = C THEN 'Equilateral'
    WHEN A + B <= C OR B + C <= A OR A + C <= B THEN 'Not A Triangle'
    WHEN A = B OR A = C OR B = C THEN 'Isosceles'
    ELSE 'Scalene'
END)
FROM TRIANGLES;

위의 두 코드는 ⭐ 표시가 된 부분(20, 20, 40)에 대해 서로 다른 결과를 출력한다.

  • 오답 코드는 Isosceles라고 출력
  • 정답 코드는 Not A Triangle라고 출력

왜 그럴까 ❓

(20, 20, 40)A = B 이므로 Isosceles 조건에 만족하지만, A + B <= C 조건에 해당하므로 Not A Triangle으로 분류되어야 한다.

즉, 2개의 변의 길이가 같더라도 Not A Triangle일 수 있음에 주의한다 ❗

Isosceles에 대한 조건 탐색을 먼저 해버리면 Not A Triangle인 경우에도 2개의 변의 길이만 같다면 Isosceles로 분류되어버린다.

Not A Triangle가 아니라는 조건하에 Isosceles 조건에 부합하는지를 탐색하도록 Not A Triangle 조건이 먼저 입력되어야 한다.


0개의 댓글

관련 채용 정보