SQL/문제풀이

[HakcerRank] Type of Triangle

응엉잉 2024. 2. 14. 15:00

https://www.hackerrank.com/challenges/what-type-of-triangle/problem?h_r=internal-search&isFullScreen=true

 

Type of Triangle | HackerRank

Query a triangle's type based on its side lengths.

www.hackerrank.com

우선 삼각형이 되기 위해서는, 가장 긴 변을 제외한 두 변의 길이를 더한 값 > 가장 긴 변의 길이 여야 한다.

처음 작성한 코드는 다음과 같다.

WHEN 을 여러번 사용하여 1개의 CASE문 내에 여러개의 조건을 넣었는데 .. 틀렸다 !

CASE문에 작성한 조건의 순서가 틀렸던것으로 보인다.

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 a+c > b OR b+c > a THEN 'Scalene'
        ELSE 'Not A Triangle'
        END
FROM triangles

 

triangles 테이블을 출력해보니까 문제를 찾을 수 있었다.

8행을 보면 20 20 40 이라는 row가 있는데, 이 숫자 조합으로는 삼각형이 될 수 없다. 

하지만 내가 쓴 조건대로라면 a = b 이므로 이등변삼각형이게 된다.

그래서 삼각형이 안되는 경우부터 걸러줘야했던거다!

SELECT
    CASE
        WHEN a = b AND b = c THEN 'Equilateral'
        WHEN a + b <= c OR a + c <= b OR b + c <= a THEN 'Not A Triangle'
        WHEN a = b OR a = c OR b = c THEN 'Isosceles'
        ELSE 'Scalene'
        END
FROM triangles