본문 바로가기

SQL/[HackerRank]

[HackerRank/MySQL] Type of Triangle

728x90

< Problem >

삼각형 종류 구하기

  • Equilateral: 3변의 길이가 모두 같음.
  • Isosceles: 3변 중 2변의 길이가 같음.
  • Scalene: 3변 모두 길이가 다름.
  • Not A Triangle: 한 변의 길이가 다른 두변의 길이의 합보다 큼.

링크:  https://www.hackerrank.com/challenges/what-type-of-triangle/problem

 

Type of Triangle | HackerRank

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

www.hackerrank.com


< Code >

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 (c=a) THEN 'Isosceles'
    ELSE 'Scalene'
END AS type
FROM triangles

 

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

 

< Lesson & Learned >

SELECT 문 (조건검색)

SELECT: 키워드와 함께 검색하고 싶은 속성의 이름을 나열

FROM: 키워드와 함께 검색하고 싶은 속성이 있는 데이블의 이름을 나열

CASE~END: 다중 조건문에서 사용. (WHEN 조건 THEN 반환값) 형태로 작성하며, 모든 조건을 충족하지 않을 때 반환하는 값은 마지막에 (ELSE 반환값) 형태로 작성. 조건의 순서를 지정하는 것이 중요함.

 

🚫 순서를 잘못 지정하면 오류가 남. (아래 SQL문은 오류가 나는 SQL문)

SELECT
CASE
    WHEN (a=b) AND (b=c) THEN 'Equilateral'
    WHEN (a=b) OR (b=c) OR (c=a) THEN 'Isosceles'
    WHEN (a+b <= c) OR (b+c <= a) OR (a+c <= b) THEN 'Not A Triangle'
    ELSE 'Scalene'
END AS type
FROM triangles
728x90