[HackerRank] Type of Triangle연습문제

HACKERRANK 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 sides of equal length.
Isosceles: It's a triangle with sides of equal length.
Scalene: It's a triangle with sides of differing lengths.
Not A Triangle: The given values of A, B, and C don't form a triangle.
Input Format

[구해야하는 것]
삼각형 종류를 구분하는 쿼리 작성

[처음에 틀리게 작성했던 쿼리]

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

[틀린 이유]

단순히 문제에 제시된대로
정삼각형 -> 이등변 삼각형-> 그냥 삼각형 -> 삼각형이 아닌 것
순서대로 조건문 작성

BUT
이럴 경우
1) 삼각형을 만들 수 있는 조건이 아닌데
*예를 들면 (20 20 40)
이등변 삼각형으로 구분되는 조건이 생김
따라서 NOT A TRIANGLE 을 먼저 작성해 줘야 함

CASE 조건문을 쓸 때는 그 순서에 유의해야한다는 점을 기억하자

2) 정삼각형의 경우 A=B AND B=C 이 두 가지만 작성해도 A=B=C

[정답]

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 B=C OR A=C THEN 'Isosceles'
            ELSE 'Scalene'
       END 
FROM TRIANGLES

#본 내용은 데이터리안 'SQL 데이터 분석 캠프 입문반'을 수강하며 작성한 내용입니다

좋은 웹페이지 즐겨찾기