SQL/문제풀이
[HakcerRank] Type of Triangle
응엉잉
2024. 2. 14. 15:00
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