hackerrank13 [HackerRank] Weather Observation Station 20 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 미디안 값을 구하기 위해 COUNT를 이용해서 반으로 나눈 후 조건과 LIMIT 을 이용하여 풀어보려 접근했습니다. 그러나 홀수개와 짝수개인 경우 구해야하는것이 달라 어려움을 겪었습니다. 타 블로그를 참고하여 새로운 방식으로 접근하여 풀었습니다. 2) 풀이 코드 사용 언어 - MySQL SET @idx=-1; -- SET 이용하여 변수로 사용 SELECT ROUND(AVG(lat_n), 4) -- 출력해야하는 열, 짝수인 경우 중앙 두개의 평균을 구해야하므로 평균값 사용 FROM ( SELECT @idx:=@idx+1 AS rowID, lat_n FROM station ORDER BY lat_n ) -- 인덱스를 1씩 증가 시켜서 총 개수를 알아냄 W.. 2022. 1. 6. [HackerRank] Weather Observation Station 19 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 유클리드 거리 계산 구하는 공식을 적용시키기 위해 제곱을 구하는 POW 함수와 제곱근을 구하는 SQRT 함수를 사용하였습니다. 2) 풀이 코드 사용 언어 - MySQL SELECT ROUND(SQRT(POW((MAX(lat_n) - MIN(lat_n)), 2) + POW((MAX(long_w) - MIN(long_w)), 2)), 4) -- 유클리드 거리 계산 FROM station; 📝 결과 및 학습한 내용 1) 어려웠던 내용 함수의 존재 여부를 알 수 없어서 구글에 검색하여 함수를 알게 되었습니다. 2) 새롭게 학습한 내용 제곱 구하기 : POW(x, y) -> x^y (x의 y제곱) 제곱근 구하기 : SQRT(x) -> 루트 x 의 값 🔗 문제 .. 2022. 1. 4. [HackerRank] Weather Observation Station 18 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 각 위도, 경도의 최소, 최댓 값을 구해야하므로 MIN 과 MAX 를 사용하여 구함 2) 풀이 코드 사용 언어 - MySQL SELECT ROUND((max(lat_n) - min(lat_n)) + (max(long_w) - min(long_w)), 4) -- MIN과 MAX로 좌표값들을 구하고 맨해튼 거리를 구함 FROM STATION 📝 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없음 2) 새롭게 학습한 내용 절대값을 구하는 함수 ABS(숫자) 를 새로 알게 됨 🔗 문제 링크 - https://www.hackerrank.com/challenges/weather-observation-station-18/problem?isFullScreen=fa.. 2022. 1. 3. [HackerRank] The PADS 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 결과가 특정 문자들과 함께 출력이 되어야 하므로 CONCAT 을 사용 서로 다른 결과를 출력하는 서브 쿼리를 합쳐야 하기에 UNION 하여 두개의 테이블을 합치는 방식으로 접근 초기에 각 서브쿼리의 결과를 정렬을 한 후 UNION 을 시도하였으나 UNION 을 실행하면 정렬된 결과들이 정렬되지 않은 상태로 테이블이 합쳐져서 결과로 나타나게 됨 문제를 해결하려 여러 방법을 시도하였으나, 세심한 정렬이 어려움 SQL 쿼리문을 두개를 만들어 각자 출력하는 방식으로 접근 2) 풀이 코드 사용 언어 - MySQL SELECT CONCAT(name, "(", SUBSTR(occupation, 1, 1), ")") -- CONCAT 함수를 이용해 특정 문자와 결과.. 2022. 1. 2. [HackerRank] Top Earners 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 총 수입 계산을 위해 연산 및 별칭 사용 서브쿼리와 Group by 를 이용하여 접근 시도를 하였으나, 어려움을 겪음 총 수입이 많은 순서대로 정렬 및 제한된 개수의 결과만 출력하도록 접근 COUNT(*) 사용시 원치않는 NULL 값이 포함될 수 있어 특정열을 카운트하도록 사용 2) 풀이 코드 사용 언어 - MySQL SELECT (months * salary) AS earnings, COUNT(name) -- 총 수입, 같은 수입을 가진 사람의 수 FROM employee GROUP BY earnings -- 총 수입을 그룹으로 묶음 ORDER BY earnings DESC -- 수입이 많은 순으로 정렬 LIMIT 1; -- 상위 1개만 출력 📝 결.. 2021. 12. 30. [HackerRank] The Blunder 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 평균을 구해야 하므로 AVG 활용 0을 없애기 위해 REPLACE 함수 사용 2) 풀이 코드 사용 언어 - MySQL SELECT CEIL(AVG(salary) - AVG(REPLACE(salary, '0' ,''))) -- 올림(0이 있을때 평균 - 0이 없을때 평균) FROM employees 📝 결과 및 학습한 내용 1) 어려웠던 내용 문자에서 특정 문자를 없애는 것에 어려움을 겪음 2) 새롭게 학습한 내용 어떠한 열의 특정 문자열을 대체 하기 위해서는 REPLACE 함수를 사용한다 REPLACE(컬럼명, 기존 문자열, 변경 문자열) 🔗 문제 링크 - https://www.hackerrank.com/challenges/the-blunder/pro.. 2021. 12. 29. [HackerRank] The Report 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 등급 테이블에서 해당 범위 안에 속하면 등급을 매겨야 하므로 조인으로 데이터 결합 출력에서 등급이 특정 수준 이하이면 NULL 값을 출력해야하므로 CASE 절 사용 2) 풀이 코드 사용 언어 - MySQL, Oracle SELECT CASE WHEN g.grade >= 8 THEN s.name -- grade 가 8 이상만 이름 출력 ELSE NULL -- 8 이하는 NULL 값 END , g.grade, s.marks FROM students AS s JOIN grades AS g ON (s.marks >= g.min_mark AND s.marks 2021. 12. 28. [HackerRank] Average Population of Each Continent 📖 문제 🧑🏻💻 풀이 과정 1) 문제 이해 및 접근 대륙별 인구의 평균이 필요하므로 조인, 대륙별 그룹화를 하여 데이터 출력으로 접근 2) 풀이 코드 사용 언어 - MySQL SELECT country.continent, FLOOR(AVG(city.population)) -- 대륙별 모든 도시들의 인구수 평균(정수 이하 버림) FROM city LEFT JOIN country ON city.countrycode = country.code -- 조인 GROUP BY country.continent -- 대륙별로 그룹화 HAVING country.continent IS NOT NULL; -- 대륙 정보가 없는것은 제외 📝 결과 및 학습한 내용 1) 어려웠던 내용 대륙 정보가 없는 경우에도 출력을 했었으나,.. 2021. 12. 27. [HackerRank] African Cities 문제 풀이 과정 1) 문제 이해 및 접근 두 개의 테이블에서 데이터가 필요하여 조인을 이용한 접근 2) 풀이 코드 사용 언어 - MySQL SELECT city.name -- 출력할 열 FROM city -- 테이블 LEFT JOIN country -- JOIN 할 테이블 ON city.countrycode = country.code -- 조인 조건 WHERE country.continent = 'Africa'; -- 데이터 조건 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 문제 링크 - https://www.hackerrank.com/challenges/african-cities/problem?isFullScreen=false African Ci.. 2021. 12. 26. [HackerRank] Population Census 문제 풀이 과정 1) 문제 이해 및 접근 두개의 테이블이 있어 JOIN 하여 데이터를 조건에 따라 출력하려고 접근했습니다. 2) 풀이 코드 사용 언어 - MySQL SELECT SUM(city.population) -- 출력 열 (모든 도시들의 인구의 합) FROM city -- 조인할 기준 테이블 JOIN country ON city.countrycode = country.code -- country 테이블과 조인 WHERE country.continent = 'Asia'; -- 대륙이 아시아인 데이터들만 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 문제 링크 - https://www.hackerrank.com/challenges/asian-po.. 2021. 12. 23. [HackerRank] Weather Observation Station 15 문제 풀이 과정 1) 문제 이해 및 접근 위도 값 중 제일 큰 값의 경도를 구해야 하므로, 위도 크기 순서대로 정렬 후 상위 1개만 출력하는 방식으로 접근했습니다. 2) 풀이 코드 사용 언어 - MySQL SELECT ROUND(long_w, 4) -- 출력할 열 FROM station -- 테이블 WHERE lat_n < 137.2345 -- 위도의 조건 ORDER BY lat_n DESC -- 큰 위도부터 순서대로 정렬 LIMIT 1; -- 가장 큰 위도의 경도이므로, 상위 1개의 결과만 출력 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 문제 링크 - https://www.hackerrank.com/challenges/weather-observ.. 2021. 12. 22. [HackerRank] Weather Observation Station 13 문제 풀이 과정 1) 문제 이해 및 접근 조건에 해당하는 행들의 위도의 합을 구하고, 소수점 자리를 4째자리까지만 표현해야하므로 sum 함수와 trunc 함수를 이용하는 방법으로 접근했습니다. 2) 풀이 코드 사용 언어 - Oracle SELECT TRUNC(SUM(lat_n), 4) -- 출력하는 열 (위도의 합을 구하고 소수점 4자리에서 자름) FROM station -- 테이블 WHERE lat_n > 38.7880 AND lat_n < 137.2345; -- 위도가 38.7880 보다 크고 137.2345 보다 작은 경우 결과 및 학습한 내용 1) 어려웠던 내용 특별히 없습니다. 2) 새롭게 학습한 내용 특별히 없습니다. 문제 링크 - https://www.hackerrank.com/challen.. 2021. 12. 21. 이전 1 2 다음