[프로그래머스 LV.0] 배열 만들기 2 — Python 정답 & 해설

2026. 6. 11. 16:54·코딩테스트/알고리즘

🔗 1. 문제 URL

https://school.programmers.co.kr/learn/courses/30/lessons/181921

 

프로그래머스

SW개발자를 위한 평가, 교육의 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프

programmers.co.kr

 


 

📝 2. 문제 요구사항 정리

정수 l과 r이 주어졌을 때, l 이상 r 이하의 정수 중에서 숫자 0과 5로만 이루어진 수를 모두 찾아 배열로 반환하는 문제입니다.

  • 탐색 범위: l부터 r까지의 모든 정수를 확인합니다.
  • 조건: 각 정수를 문자열로 바꿨을 때 모든 문자가 0 또는 5여야 합니다.
  • 예외 처리: 조건을 만족하는 수가 하나도 없다면 [-1]을 반환합니다.

 


 

💡 3. 핵심 개념

✔ 1) 숫자를 문자열로 변환해 자리수 확인하기

각 숫자의 모든 자리수가 0 또는 5인지 확인해야 하므로, 숫자를 문자열로 변환하면 한 글자씩 쉽게 검사할 수 있습니다. 예를 들어 505는 문자열 "505"로 바꾼 뒤 각 문자가 "0" 또는 "5"에 포함되는지 확인하면 됩니다.

✔ 2) all() 함수로 모든 조건 만족 여부 확인하기

Python의 all() 함수는 반복 가능한 값들이 모두 True일 때만 True를 반환합니다. 따라서 all(char in "05" for char in str(cur))처럼 작성하면 현재 숫자의 모든 자리수가 0 또는 5인지 간단하게 확인할 수 있습니다.

✔ 3) 조건을 만족하는 값이 없는 경우 처리하기

문제에서는 조건을 만족하는 정수가 없다면 -1이 담긴 배열을 반환해야 합니다. 따라서 탐색이 끝난 뒤 answer가 비어 있는지 확인하고, 비어 있다면 -1을 추가해 예외 상황을 처리합니다.

 


 

✅ 4. 정답 Python 코드

def solution(l, r):
    # 없는 경우 -1 리턴 예외처리
    
    answer = []
    
    for cur in range(l, r + 1):
        # 0이나 5 이외의 숫자가 들었다면 
        if all(char in "05" for char in str(cur)):
            answer.append(cur)
            
    if len(answer) == 0:
        answer.append(-1)
        
    return answer

 


 

💬 5. 풀이하면서 느낀 점

처음에는 숫자의 각 자리수를 직접 나누어 확인하는 방식도 생각할 수 있지만, Python에서는 문자열로 변환하면 훨씬 간단하게 조건을 검사할 수 있었습니다.

특히 all()과 제너레이터 표현식을 함께 사용하면 모든 자리수가 조건을 만족하는지 한 줄로 확인할 수 있어 코드가 깔끔해졌습니다. 조건을 만족하는 수가 없을 때 [-1]을 반환해야 한다는 예외 처리도 마지막에 한 번만 확인하면 되어 흐름이 단순했습니다.

 

궁금하신 점이나 포스팅에 대한 피드백이 있다면 댓글로 편하게 남겨주세요.

도움이 되셨다면 공감이나 댓글 한 줄 남겨주시면 포스팅을 이어가는 데 큰 힘이 됩니다. 😊

'코딩테스트 > 알고리즘' 카테고리의 다른 글

[프로그래머스 LV.2] 괄호 회전하기 — Python 정답 & 해설  (0) 2026.06.16
[프로그래머스 LV.0] 유한소수 판별하기 — Python 정답 & 해설  (1) 2026.06.13
[프로그래머스 LV.0] 배열 조각하기 — Python 정답 & 해설  (0) 2026.06.11
[프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설  (0) 2026.05.22
[프로그래머스 LV.1] 모의고사 — Python 정답 & 해설  (0) 2026.05.21
'코딩테스트/알고리즘' 카테고리의 다른 글
  • [프로그래머스 LV.2] 괄호 회전하기 — Python 정답 & 해설
  • [프로그래머스 LV.0] 유한소수 판별하기 — Python 정답 & 해설
  • [프로그래머스 LV.0] 배열 조각하기 — Python 정답 & 해설
  • [프로그래머스 LV.2] 행렬의 곱셈 — Python 정답 & 해설
작지만 꾸준한 성장으로
작지만 꾸준한 성장으로
contact
  • 작지만 꾸준한 성장으로
    파랑새
    작지만 꾸준한 성장으로
  • 전체
    오늘
    어제
    • 분류 전체보기 (26)
      • IT (3)
      • 코딩테스트 (23)
        • 알고리즘 (12)
        • MYSQL (11)
      • 패션 (0)
      • 독후감 (0)
      • TIL (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    python3
    데이터베이스
    파이썬코테
    데이터 리모델링
    Pandas pivot
    Pandas melt
    CPU Bound
    데이터 전처리 파이프라인
    mysql
    프로그래머스
    Programmers
    코딩테스트
    백준
    자바
    프로그래머스 lv.1
    long format
    와이드 포맷 롱 포맷
    코테
    모델 추론
    Python
    파이썬
    알고리즘
    공공데이터 전처리
    Pandas groupby agg
    wide format
    SWEA
    I/O Bound
    프로그래머스 lv.2
    프로그래머스 lv.0
    sql 코딩테스트
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.5
작지만 꾸준한 성장으로
[프로그래머스 LV.0] 배열 만들기 2 — Python 정답 & 해설
상단으로

티스토리툴바