문제 링크
https://www.hackerrank.com/challenges/what-type-of-triangle/problem?isFullScreen=true
문제
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;
'SQL > HackerRank(MYSQL)' 카테고리의 다른 글
[SQL][HackerRank] Top Earners (0) | 2022.04.18 |
---|---|
[SQL][HackerRank] The Blunder (0) | 2022.04.18 |
MySQL 설치 및 환경 구축 (4-1) - MySQL설치 후 Workbench로 접속하기 (0) | 2021.01.12 |
MySQL 설치 및 환경 구축 (2, 3) - MySQL 설치 및 구동 (0) | 2020.12.30 |
MySQL 설치 및 환경 구축 (1) - 리눅스용 윈도우 하위 시스템(WSL) 설치 (0) | 2020.12.30 |