본문 바로가기

hackerrank

(13)
[SQL] SQL로 이진트리 탐색하기(HackerRank - Binary Tree Nodes 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 SQL로 이진트리를 탐색하는 문제를 풀어보려 한다. 문제 원본은 여기를 클릭해 확인하자. 우선은 이진트리(Binary Tree)는 다음과 같은 특성을 갖고 있다. $Leaf$ 노드를 제외하고 $Root$ 노드를 포함한 모든 부모(Parent) 노드는 자신의 노드값 기준으로 왼쪽은 무조건 작은 값, 오른쪽은 무조건 큰 값이 존재하는 트리 구조라고 할 수 있다. 단, 부모 노드에 자식 노드가 하나만 존재하는 것이 가능하다. 텍스트로 이해하기 쉽지 않을 수도 있기에 이진트리의 구조를 사진으로 가져와 보았다. 이제 이진트리가 무엇..
[SQL] SQL로 소수(Prime Number) 출력하기(HackerRank - Print Prime Numbers 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 SQL로 소수(Prime Number)를 출력해보는 문제를 풀어보려고 한다. 해당 문제를 풀기 위해서 MySQL의 Stored Procedure를 참고해서 풀기도 했지만 일반적인 쿼리문을 통해 해결할 수 있는 풀이를 소개하기 위해 Discussion의 다른 분의 뛰어난 풀이를 참고했다. 하지만 문제를 해결해나가면서 MySQL의 Procedure라는 것에 대해 알게 되었고 Procedure 안에서 WHILE, LOOP, ITERATE, IF 등 다양한 문법을 사용할 수 있다는 사실도 알게 되었다. 이에 대해 자세히 알고 싶..
[SQL] HackerRank - Placements 문제 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 HackerRank의 Placements 문제를 풀어보려고 한다. 문제 원본은 여기를 클릭해 확인해보자. 다른 문제들 보다는 수월하게 해결했기 때문에 문제 풀이에 활용한 아이디어와 정답 SQL 구문만 제시하고 간단하게 포스팅을 마치려 한다. 문제에서 요구하는 사항은 다음과 같다. Write a query to output the names of those students whose best friends got offered a higher salary than them. Names must be ordered by th..
[SQL] HackerRank - SQL Project Planning 문제 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 HackerRank의 SQL Project Planning 문제를 풀어보자. 이번 문제에서 요구하는 사항은 필자가 직접 설명하기 보다는 문제의 원본을 읽어보는 것이 더 수월할 것으로 판단된다. 문제 원본은 여기를 클릭해 살펴보자. 해당 문제를 풀어보려다가 결국 풀지 못하고 Discussion을 살펴보았는데, 마치 SQL문제인데 데이터 속에서 패턴을 발견해야 하는 알고리즘 문제처럼 느껴졌다.. 문제를 풀기 위한 아이디어는 다음과 같다. Start_Date 중 End_Date에는 없는 Start_Date는 각 연속적이지 않고..
[SQL] HackerRank - Contest Leaderboard 문제 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 HackerRank의 Contest Leaderboard 문제를 풀어보려고 한다. 문제 원본은 여기를 클릭해 확인해보고 문제에서 요구하는 사항을 확인해보자. The total score of a hacker is the sum of their maximum scores for all of the challenges. Write a query to print thehacker_id,name, and total score of the hackers ordered by the descending score. If more th..
[SQL] MySQL에서는 안되는 풀이(HackerRank - The PADS 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅은 HackerRank 사이트의 The PADS 문제를 풀어보려고 한다. 난이도는 Medium 이지만 예상 외로 쉽게 해결했다. 하지만 어렵지 않은 문제임에도 블로그에 게시하는 이유는 바로 MySQL이 아닌 MS SQL을 이용해 해결했기 때문이다. 즉, MySQL 문법으로는 해결할 수 없기 때문이다. 문제 원본은 여기를 클릭해 살펴보고 문제에서 요구하는 사항을 확인해보자. 문제는 다음과 같은 2가지 결과를 출력하길 원한다. 주어진 테이블의 Name을 알파벳 순서로 정렬해 출력하는데, 끝에 각 Name에 해당하는 Occupatio..
[SQL] HackerRank - Ollivander's Inventory 문제풀이 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 HackerRank의 Olivander's Inventory 문제를 풀어보려고 한다. 해당 문제는 필자가 약 1시간 동안 쩔쩔 매다가 몇 번의 시도 끝에도 풀리지 않아서 문제의 Discussion을 보고 이해한 문제다. 개인적으로 문제가 해리포터와 연관된 이야기로 나오길래 오히려 문제가 더 잘 읽히지도 않았고 헷갈렸다.(Discussion을 보니 몇 사람들이 문제 설명이 명시적이지 않다고 불만을 제기한 의견들도 꽤 되었다..) 이 문제를 통해서 배우게 된 점은 서브 쿼리를 작성할 때 메인 쿼리에서 활용한 테이블의 칼럼을 ..
[SQL] HackerRank - Top Competitors 문제풀이 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 해커랭크 사이트의 Top Competitors 문제를 풀이해보자. 문제 원본은 여기를 클릭해 읽어보자. 문제에서 주어진 테이블들은 문제 원본을 살펴보고 여기에서는 어떤 출력의 내용은 요구하는지에 대해서 이해해보자. Julia just finished conducting a coding contest, and she needs your help assembling the leaderboard! Write a query to print the respectivehacker_idandnameof hackers who achie..
[SQL] 연속적인 JOIN 구문으로 해결하기(HackerRank - New Companies 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 해커랭크 문제의 New Companies 문제 풀이에 대해 소개하려고 한다. 필자가 직접 풀이했던 연속적인 JOIN 구문을 사용하는 방법과 Discussion에 존재했던 다른 분의 JOIN 구문을 사용하지 않은 풀이도 소개해보려 한다. 이번 문제는 주어진 테이블 개수도 여러개이기 때문에 포스팅에서 소개한다면 너무 번잡해질 것 같아 문제에 대한 이해는 원본 문제인 여기를 참고하자. 원본 문제를 읽고 나면 문제에서 요구하는 사항이 정확히 무엇인지 파악할 수 있다. 각 Company의 Company_code, Founder, ..
[SQL] MySQL로 중앙값(Median) 찾아내기 - (HackerRank - Weather Observation Station 20 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 MySQL을 활용해 Median값을 출력해보는 문제를 풀어보려 한다. Median이란, 잘 알다시피 중앙값을 의미하며 보통 데이터 분포가 치우쳐져 있을 때 데이터의 대푯값으로 자주 설정하는 척도이다. 이런 중앙값을 SQL로 계산하는 방법에 대해 알아보자. 문제의 원본은 여기를 참조하자. 문제의 요구사항은 다음과 같다. A median is defined as a number separating the higher half of a data set from the lower half. Query themedianof theN..
[SQL] CASE WHEN으로 Pivot Table 만들기(HackerRank - Occupations 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 MySQL의 CASE WHEN 구문으로 Pivot Table을 만들어 문제를 해결하는 방법에 대해 소개하려 한다. 활용하려는 문제는 HackerRank 사이트의 Occupations 문제이다. 원본은 여기를 참조하자. 우선 Pivot table이란 무엇일까? 직관적으로 말하면 Row에 있는 값들을 Column으로 변형한 테이블을 말하는데, Pandas의 pivot(), pivot_table() 메소드를 활용해본 사람들에겐 익숙할 것이다. Pivot table의 형태는 다음과 같다. 그렇다면 이것을 CASE WHEN 구문으로..
[SQL] 복잡한 서브쿼리 문제풀이(HackerRank - Challenges 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 여러가지 서브쿼리를 이용해야 해결할 수 있는 HackerRank의 Challenges 문제를 같이 풀어보려고 한다. 우선 문제 설명과 출력 형태를 살펴보자. 문제 원본을 살펴보려면 여기를 클릭해보자. 문제 설명은 다음과 같다. Julia asked her students to create some coding challenges. Write a query to print the hacker_id, name, and the total number of challenges created by each student. Sort..
[SQL] HAVING, WHERE, FROM 절에 서브쿼리 이용하기(HackerRank - Top Earners 문제) 🔊 본 포스팅에서 사용되는 테이블의 자료와 출처는 HackerRank 임을 밝힙니다. 더 다양한 SQL 문제를 풀어보시려면 HackerRank 사이트를 방문해 보세요! 이번 포스팅에서는 HackerRank 사이트의 SQL 문제중 'Top Earners' 문제에 대한 서로 다른 3가지 풀이방법에 대해 소개해보려 한다. 이 3가지 풀이의 공통점은 서브쿼리를 사용했다는 점인 반면 차이점은 서브쿼리를 SQL 구문의 어느 위치 즉, HAVING 다음인지, WHERE 다음인지, FROM 다음인지에 따라 조금씩 달라진다는 점이다. 우선 풀이할 문제와 문제가 요구하는 사항에 대해서 알아보자. 문제 원본을 보기 위해서는 여기를 클릭해 확인해보자. 위 테이블이 주어졌을 때, 문제사항은 다음과 같다. We define an..