본문 바로가기
PROGRAMMING/LeetCode

196. Delete Duplicate Emails_해설, 풀이, 설명

by HYUNHP 2023. 10. 28.
반응형

안녕하세요, HELLO

 

오늘은 Leetcode 알고리즘 문제 '196. Delete Duplicate Emails'에 대해서 살펴보고자 합니다. 

 

알고리즘 문제, 코드, 해설 그리고 Leetcode에서 제공해 준 solution 순서대로 정리하였습니다.


STEP 1. 'Delete Duplicate Emails' 알고리즘 문제

 

STEP 2. 'Delete Duplicate Emails' 코드(code)

 

STEP 3. 'Delete Duplicate Emails' 해설

 

STEP 4. 'Delete Duplicate Emails' solution

 

반응형

 

STEP 1. 'Delete Duplicate Emails' 알고리즘 문제

 

 

Write a solution to delete all duplicate emails, keeping only one unique email with the smallest id.
For SQL users, please note that you are supposed to write a DELETE statement and not a SELECT one.
For Pandas users, please note that you are supposed to modify Person in place.
After running your script, the answer shown is the Person table. The driver will first compile and run your piece of code and then show the Person table. The final order of the Person table does not matter.

 

가장 작은 ID를 가진 하나의 고유 이메일만 유지하면서 모든 중복 이메일을 삭제하는 솔루션을 작성합니다.
(SQL 사용자의 경우 SELECT 문이 아닌 DELETE 문을 작성해야 한다는 점에 유의합니다)

(Pandas 사용자의 경우 Person을 수정해야 한다는 점에 유의합니다)


스크립트를 실행한 후 표시되는 응답은 Person 테이블입니다. 드라이버는 먼저 코드를 컴파일하고 실행한 다음 Person 테이블을 표시합니다. Person 테이블의 최종 순서는 중요하지 않습니다.

 


STEP 2. 'Delete Duplicate Emails' 코드(code)

 

■ Runtime: 1064ms Beats 94.62%
■ Memory: 0.00MB Beats 100.00%

 

DELETE p1
FROM Person as p1
JOIN (
  SELECT min(id) as min_id, email
  FROM Person
  GROUP BY email
) as p2
on p1.email = p2.email
  AND p1.id > p2.min_id

STEP 3. 'Delete Duplicate Emails' 해설

 

Person 테이블에서 가장 작은 id 값을 email로 group하여 select 한 p2 테이블을, 원래 Person 테이블인 p1과 비교합니다. 이때 가장 작은 id 값을 제외한 대상만 선택되어 출력됩니다.

 

728x90

 

STEP 4. 'Delete Duplicate Emails' solution

 

추가적으로, Leetcode에서 제공해준 solution 코드를 살펴보겠습니다.

 

■ Runtime: 1459ms Beats 66.39%
Beats: 0.00MB Beats 100.00%

 

DELETE p1
FROM Person p1, Person p2
WHERE p1.Email = p2.Email AND p1.Id > p2.Id;

■ 마무리

 

오늘은 Leetcode 알고리즘 문제 '196. Delete Duplicate Emails'에 대해서 알아봤습니다.

좋아요와 댓글 부탁드리며,

오늘 하루도 즐거운 날 되시길 기도하겠습니다 :)

감사합니다.

반응형

댓글