코테44) 배열만들기2

gyu·2024년 5월 11일

Algorithm

목록 보기
45/45

📝 문제설명

정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.

만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.

제한사항
1 ≤ l ≤ r ≤ 1,000,000
입출력 예
l r result
5 555 [5, 50, 55, 500, 505, 550, 555]
10 20 [-1]

내 풀이:

def solution(l, r):
    answer = []
    # l <= i <= r
    for i in range(l, r+1):
    #check if i contains '5' and if all of its digits are either '5' or '0
        if '5' in str(i) and all(d in '50' for d in str(i)):
            answer.append(i)
    #if answer is empty, return -1
    if not answer:
        return [-1]
    return answer

i) for loop를 통해 l 이상 r이하의 정수를 찾는다
ii) if statement랑 all()을 사용해 조건에 맞는 수들을 찾아 리스트에 넣는다
해당하는 가장 작은 정수부터 들어가니 굳이 sort()를 써서 오름차순을 할 필요는 없다
iii)만약 리스트가 비었다면 5와 0으로 구성된 정수가 하나도 없다는 뜻이는 -1을 가진 리스트 반환한다

🔗 관련개념

all(): returns True if all items in an iterable are true, otherwise it returns False.

✔ Tips to improve

def solution(l, r):
    answer = []
    for num in range(l, r + 1):
        if not set(str(num)) - set(['0', '5']):
            answer.append(num)
    return answer if answer else [-1]
profile
#TechExplorer 🚀 Curious coder exploring the tech world, documenting my programming journey in a learning journal

0개의 댓글