SQL/HackerRank(MYSQL)

[SQL][HackerRank] Type of Triangle

삐야오 2022. 4. 13. 14:37

문제 링크

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

 

Type of Triangle | HackerRank

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

www.hackerrank.com

 

문제

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.

 

세개의 변의 길이를 이용해 TRIANGLES 테이블에 있는 각 레코드의 타입을 알아내는 쿼리를 작성하시오. 테이블의 각 레코드에 대해 다음 문 중 하나를 출력합니다.

  • Equilateral: 세 변의 길이가 모두 같은 삼각형
  • Isosceles: 두 변의 길이가 같은 삼각형
  • Scalene: 세 변의 길이가 모두 다른 삼각형
  • Not A Triangle: 주어진 세 변(A,B,C)으로 삼각형을 만들 수 없음.

 

문제풀이

  • CASE문을 활용하여 각각의 경우를 나누어줄 수 있음. (순서 중요!!)
    • 'Equilateral'의 경우, 세 변이 모두 같아야 하기 때문에 A=B AND B=C
    • 'Not A Triangle'의 경우, 한 변의 길이가 나머지 두 변의 길이의 합보다 크거나 같으면 삼각형을 만들 수 없기 때문에 A >=B+C OR B>=A+C OR C>=A+B
    • 'Isosceles'의 경우, 임의의 두변의 길이가 같으면 되기 때문에 A=B OR A = C OR B = C
    • 그 외, 삼각형을 만들 수 있는 경우 중 세 변이 모두 다른 경우는 ELSE로 표현 가능

 

쿼리문

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