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:
Input Format
The TRIANGLES table is described as follows:
Column | Type |
---|---|
A | Integer |
B | Integer |
C | Integer |
Each row in the table denotes the lengths of each of a triangle's three sides.
Sample Input
A | B | C |
---|---|---|
20 | 20 | 23 |
20 | 20 | 20 |
20 | 21 | 22 |
13 | 14 | 30 |
Sample Output
Isosceles
Equilateral
Scalene
Not A Triangle
이번문제는 알고보면 정말 쉬운문제인데 파이썬에서는 and나 or에대해서 너무 자연스럽고 익숙해서 뭘써야겠다 생각도 안하고 바로바로 사용을 하곤한다. 물론 생각을 할때도 많다.
하지만, SQL도 그럴줄 알았는데 바로 되지않았고 or을 해야하는 부분에 and를 사용하여 계속해서 실패하였다.
두변의 길이가 같은 삼각형이 정삼각형이 될수도 있음을 인지하지 못하고 있어서 A=B!=C이런식의 코드를 작성했지만 계속해서 실패했고, 생각해보니 이등변삼각형은 정삼각형의 부분집합의 개념이라는 것을 생각하게 되었고 코드를 수정하여 정답을 내었다.
SELECT
CASE
WHEN A=B AND B=C THEN 'Equilateral'
WHEN A>=B+C OR B>=C+A OR C>=A+B THEN 'Not A Triangle'
WHEN A=B OR B=C OR C=A THEN 'Isosceles'
WHEN A!=B AND B!=C AND C!=A THEN 'Scalene'
END
FROM TRIANGLES