문제 설명
정수 l과 r이 주어졌을 때, l 이상 r이하의 정수 중에서 숫자 "0"과 "5"로만 이루어진 모든 정수를 오름차순으로 저장한 배열을 return 하는 solution 함수를 완성해 주세요.
만약 그러한 정수가 없다면, -1이 담긴 배열을 return 합니다.
예) 5 이상 555 이하의 0과 5로만 이루어진 정수는 작은 수부터 5, 50, 55, 500, 505, 550, 555가 있습니다. 따라서 [5, 50, 55, 500, 505, 550, 555]를 return 합니다.
Answer 1
- 반복문의 범위를 l 이상 r 이하로 설정
- 정수를 문자열로 변환, 0과 5로만 이루어진 정수인지 확인하는 변수 check_num 설정
- 문자열의 문자가 0과 5가 아니면 check_num을 false로 바꾸기
- check_num이 true인 값만 최종 리스트에 추가
- 최종 리스트가 비어있으면 -1 반환, 아니면 최종 리스트 반환
def solution(l, r):
a = []
for i in range(l, r+1):
str_i = str(i)
check_num = True
for j in str_i:
if j != '5' and j != '0':
check_num = False
if check_num:
a.append(i)
if len(a) == 0:
return [-1]
else:
return a
Answer 2
- 0과 5로만 이루어진 숫자를 저장할 빈 리스트 answer 초기화
- 반복문의 범위를 l 이상 r 이하로 설정
- 숫자를 문자열로 변환 후 문자가 0과 5로만 이루어졌는지 all()을 이용해 확인
- 0과 5로만 이루어졌다면 result에 추가하기
- result가 있다면 값을 반환하고 없으면 리스트 요소가 -1인 값을 반환
def solution(l, r):
result = []
for num in range(l, r+1):
if all(c in "05" for c in str(num)):
result.append(num)
return result if result else [-1]
all() 함수
반복 가능한 객체(리스트, 튜플, 집합 문자열 등)의 모든 요소가 True인지 확인
- 모든 요소가 True이면 True 반환
- 모든 요소가 True가 아니면 False 반환
- 비어있는 객체면 True 반환
# 리스트 요소 확인
numbers = [1, 2, 3, 4]
print(all(numbers))
# 결과
# True
numbers = [1, 2, 0]
print(all(numbers))
# 결과
# False
# 문자열 확인
letters = ["a", "b", "c"]
print(all(letters))
# 결과
# True
# 빈 리스트의 경우
e_list = []
print(all(e_list))
# 결과
# True