[프로그래머스/Python] 가장 큰 수

Jimin_Note·2025년 7월 24일
post-thumbnail

✨ 2025.07.23 코딩테스트 문제 풀이

📌 문제: 가장 큰 수

🧠 문제 설명

  • 0 또는 양의 정수가 주어졌을 때, 정수를 이어 붙여 만들 수 있는 가장 큰 수

💻 내가 작성한 코드

  • ❌ 1번째 답안(실패)
def solution(numbers):
    numbers = list(map(str, numbers))
    sorted_nums = sorted(numbers, key=lambda x: x*10, reverse=True)
    result = ''.join(sorted_nums)

    return result

틀린이유🥲

리스트로 ['0','0','0'] 이런 값이 들어올 경우 문자열로 변환하여 출력되면 000
으로 나올 거라는 부분은 간과했음

  • ⭕️ 1번째 답안(통과)
def solution(numbers):
    numbers = list(map(str, numbers))
    sorted_nums = sorted(numbers, key=lambda x: x*10, reverse=True)
    result = ''.join(sorted_nums)
    if sorted_nums[0] == '0':  ## 이부분 추가!
        return '0'
    return result

0을 입력받을 경우 몇개가 있던 무조건 0을 반환하도록 코드 추가

✅ 배운 점

  • 애초에 문제에 0 또는 양의 정수가 주어졌을 때 라고 되어있는데 0만 들어올 경우를 생각하지 못했다..좀더 깊이 생각할 필요가 있다
  • x*10을 쓴 이유는?
    → "3"과 "30"처럼 길이 차이가 나는 숫자들을 비교할 때 "3"10 = "3333333333" vs "30"10 = "3030303030"로 비교하게 해서 "3"이 더 앞서게 만들 수 있음.
  • 단순한 문제 같아 보여도 "0", "00" 등 극단적인 입력이 항상 들어올 수 있음.
  • 테스트케이스 설계할 때는 꼭 최솟값, 최댓값, 경계값 다 넣어서 검증하는 습관 들이자!
profile
Hello. I'm jimin:)

0개의 댓글