관리 메뉴

물 만날 물고기

[해커랭크/MYSQL] - (40) Weather Observation Station 18 본문

DB & SQL/해커랭크

[해커랭크/MYSQL] - (40) Weather Observation Station 18

Lung Fish 2023. 6. 29. 17:09

🔍 예상 검색어

더보기

# 물만날물고기

# SQL

# Weather Observation Station 18

# 해커랭크

# HACKERRANK

# MYSQL


해당 포스팅은 해커랭크/MYSQ의 "Weather Observation Station 18" 문제에 대한 풀이를 정리하였습니다.

 
 
 
▶ 문제

Weather Observation Station 18 | HackerRank

 

Weather Observation Station 18 | HackerRank

Query the Manhattan Distance between two points, round or truncate to 4 decimal digits.

www.hackerrank.com

 
▶ 내 정답

SELECT ROUND(ABS(MIN(LAT_N)-MAX(LAT_N)) + ABS(MIN(LONG_W)-MAX(LONG_W)),4)
FROM STATION

▶ 다른 사람 정답

SELECT ROUND( MAX(lat_n)-MIN(lat_n) + MAX(long_w)-MIN(long_w), 4) FROM Station;
SELECT CAST((ABS(MAX(LAT_N)-MIN(LAT_N)) + ABS(MAX(LONG_W)-MIN(LONG_W))) AS NUMERIC(18,4)) FROM STATION;

 
▶ 총평
 이해하면 쉬운 문제인데, 밑도 끝도 없이 유클리안 거리를 구하라고 하니까 당황스러울 수 있다. 근데 링크타고 들어가면 맨하탄 거리 구하는 공식이 있고,  수식에 맞춰 작성하면 된다. ABS() 함수가 절대값 함수니까 잘 사용해주면 되고, 마지막 ROUND() 처리만 4자리로 해주면 된다. 
 
 근데 다른 사람 작성코드를 살펴보니 CAST 함수를 뭐하로 사용하나? CAST함수는 언제 어떻게 많이 쓰는지 궁금해져서 별도의 확인이 필요할 것 같다. 
 
 
▼ 참고자료

No. 내용 비고
1 MySQL 형변환 CAST 함수 CONVERT 함수 사용 방법 포뇨아빠
2 [MSSQL] 소수점 반올림, 올림 방법 (ROUND, CEILING 함수) 젠트의 프로그래밍 세상
3 - -
4 - -
5 - -

 
▼ 복습/히스토리
 
 해당 문제를 WITH문으로 한스텝씩 해보고 싶어서 진행했는데, 계속 오류가 나서 확인해보니 지금 아래 처럼 소수점 자리수가 계속 제대로 반영이 안되고 끝까지 나오는 현상이 있어서 한참 찾아보았다.
 
 결국 포맷을 바꿔야 하는 건데 덕분에 여러가지 더 공부하게 되었다. CAST AS DECIMAL 통해서 표시할 자리수와 소수점 수 바꾸는 방법과 FORMAT 함수 방법을 공부하게 되었다.

WITH STEP_01 AS
(
SELECT MIN(LAT_N) AS a, MIN(LONG_W) AS b, MAX(LAT_N) AS c, MAX(LONG_W) AS d
FROM STATION
)
,
STEP_02 AS
(
SELECT ABS(a-c)+ABS(b-d) AS U
FROM STEP_01
)

SELECT ROUND(U, 4)
-- SELECT CAST(ROUND(U, 4) AS DECIMAL(10, 4))
-- SELECT FORMAT(U, '#.####')
-- SELECT FORMAT(U, '0.0000')
FROM STEP_02

SELECT CAST(ROUND(U, 4) AS DECIMAL(10, 4))
SELECT FORMAT(U, '#.####')
SELECT FORMAT(U, '0.0000')
로 했을 때는 정답으로 확인됨
 

 
 
 
 

더보기
No. 복습일 비고
1 2023년 06월 29일 - 23시 07분 서브쿼리로 진행, format 함수, cast as decimal 함수 
2    
3    
4    
5    

- 작성코드

--