정수 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.
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]