728x90
📚문제
저작권 이슈로 게시 X
📝풀이
SELECT station_id
, name
FROM station
WHERE station_id IN (SELECT s1.station_id
FROM station s1
LEFT JOIN station s2 ON s1.station_id != s2.station_id
WHERE s2.updated_at > s1.updated_at
AND 2*6356*ASIN(SQRT((1-COS(RADIANS(s1.lat)-RADIANS(s2.lat)))/2
+ COS(RADIANS(s1.lat))*COS(RADIANS(s2.lat))*(1-COS(RADIANS(s1.lng)-RADIANS(s2.lng)))/2)) <= 0.3
GROUP BY s1.station_id
HAVING COUNT(s2.station_id) >=5)
어려운 수학공식이 나오긴 했지만 풀이가 그렇게 어렵진 않다
내가 헤맨 부분은
한 정류소 ID에 대해서 일치하지 않는 정류소 ID 들의
위도/경도를 비교하는 이슈였는데
📍JOIN의 KEY 값 불일치 조건
을 활용하면 된다
(추후에도 요긴하게 사용할 것 같으니 잘 기억해두자)
+ 그리고 풀면서 뿌듯했던 부분은
구글이나 다른 풀이에 있는 수학 공식을 이용해서 푼 게 아니고
문제에서 나온 수학공식을 그대로 이용해 가면서
직접 만든 수학 공식을 이용했다는 점❗
(중간에 수 차례 시행착오
-> lng 대신 lat를 넣은 것
-> COS 공식에서 RADIANS를 취해주지 않았음)
728x90
'데이터리안' 카테고리의 다른 글
solvesql / 연습문제 / 복수 국적 메달 수상한 선수 찾기 (Unique Key) (0) | 2023.11.19 |
---|