[코딩테스트]/[Pandas]

[LeetCode - Pandas] (Easy) 619. Biggest Single Number

잰잰' 2025. 4. 25. 19:34
Table: MyNumbers

+-------------+------+
| Column Name | Type |
+-------------+------+
| num         | int  |
+-------------+------+

이 테이블은 중복이 있을 수 있습니다(즉, 이 테이블에는 SQL에서 기본 키가 없습니다).
이 테이블의 각 행은 정수 값을 포함합니다.

 

문제

단일 숫자는 MyNumbers 테이블에 한 번만 나타난 숫자입니다.

가장 큰 단일 숫자를 찾으세요. 단일 숫자가 없다면 null을 보고하세요.

결과 형식은 다음 예시와 같습니다.

Example 1:

Input: 
MyNumbers table:
+-----+
| num |
+-----+
| 8   |
| 8   |
| 3   |
| 3   |
| 1   |
| 4   |
| 5   |
| 6   |
+-----+
Output: 
+-----+
| num |
+-----+
| 6   |
+-----+

설명 : 단일 숫자는 1, 4, 5, 6입니다.
6이 가장 큰 단일 숫자이므로 6을 반환합니다.

 

Example 2:

Input: 
MyNumbers table:
+-----+
| num |
+-----+
| 8   |
| 8   |
| 7   |
| 7   |
| 3   |
| 3   |
| 3   |
+-----+
Output: 
+------+
| num  |
+------+
| null |
+------+

설명 : 입력 테이블에 단일 숫자가 없으므로 null을 반환합니다.

 

✏️ 풀이

import pandas as pd

def biggest_single_number(my_numbers: pd.DataFrame) -> pd.DataFrame:
    df = my_numbers.groupby('num')['num'].count().reset_index(name='cnt')
    df = df[df['cnt'] == 1]

    result = df[df['num'] == df['num'].max()]

    if not result.empty:
        return result[['num']]
    else:
        return pd.DataFrame({'num': [None]})

 

📚 개념정리

1. if else : 조건에 따라 실행할 코드를 분기하는 데 사용되는 제어문. 주어진 조건이 참(True)일 때와 거짓(False)일 때 실행할 코드를 정의할 수 있음

# 기본 문법 #
if 조건:
    # 조건이 참일 때 실행할 코드
else:
    # 조건이 거짓일 때 실행할 코드

 

2. empty : 데이터프레임이나 시리즈가 비어있는지를 확인하는 속성. 비어있을 경우 True를 반환하고, 그렇지 않으면 False를 반환

 

- 빈 데이터프레임: 행(row)과 열(column)이 모두 없는 데이터프레임

- 빈 시리즈: 데이터가 없고, 인덱스만 있는 시리즈