내일배움캠프/Python

[Python]for, while 반복문 연습문제

dydatablog 2024. 12. 11. 21:03
728x90

for 반복문 연습문제

문제 설명

자연수 n을 뒤집어 각 자리 숫자를 원소로 가지는 배열 형태로 리턴해주세요. 예를들어 n이 12345이면 [5,4,3,2,1]을 리턴합니다.

제한 조건

  • n은 10,000,000,000이하인 자연수입니다.

입출력 예

n return
12345 [5,4,3,2,1]
n = '12345'
re = [] # 출력값을 담을 빈 리스트 준비
n_str = str(n) # n값을 문자형으로 변경

for i in n_str :
  re.insert(0, int(i)) # 빈 리스트에 0번째 위치에 숫자형 i값을 삽입
print(re)
  
 #과정
['1']
['2', '1']
['3', '2', '1']
['4', '3', '2', '1']
['5', '4', '3', '2', '1']

 

 

while 반복문 연습문제

문제 설명

자연수 N이 주어지면, N의 각 자릿수의 합을 구해서 return 하는 solution 함수를 만들어 주세요.

예를들어 N = 123이면 1 + 2 + 3 = 6을 return 하면 됩니다.

제한사항

  • N의 범위 : 100,000,000 이하의 자연수

입출력 예

N answer
123 6
987 24

 

N = 123
ans = 0

while True:             # 1.다음 조건이 참일때 계속해라
  ans = ans + N % 10    # 2. ans = 0 + N % 10 = 3  / 5. ans = 3 + 12 % 10 = 5 / 8. ans = 5 + 1 % 10 = 6
  N = N // 10           # 3. N = 12 / 6. N = 1 / 9. N = 0
  if N // 10 == 0:      # 4. false / 7. false / 10. true
    ans = ans + N % 10  # 11. ans = 6 + 0 % 10 = 6
    break # 12. 반복문 끝
print(ans)

 

종합 연습문제

문제 설명

array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요.

divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

제한사항

  • arr은 자연수를 담은 배열입니다.
  • 정수 i, j에 대해 i ≠ j 이면 arr[i] ≠ arr[j] 입니다.
  • divisor는 자연수입니다.
  • array는 길이 1 이상인 배열입니다.
arr divisor return
[5, 9, 7, 10] 5 [5, 10]
[2, 36, 1, 3] 1 [1, 2, 3, 36]
[3,2,6] 10 [-1]

 

# 오답코드
arr = [3,2,6]
divisor = 10
ret = []

for num in arr :
  if num % divisor == 0:
    ret.append(num)

ret = sorted(ret)

if len(ret) == 0:
  print(-1)

print(ret)

#출력
-1
[]
# 정답
arr = [3,2,6]
divisor = 10
ret = []

for num in arr :
  if num % divisor == 0:
    ret.append(num)

ret = sorted(ret)

if len(ret) == 0:
  ret.append(-1)

print(ret)

 

728x90

'내일배움캠프 > Python' 카테고리의 다른 글

[Python] 함수  (1) 2024.12.13
[Python]포맷팅_ { }, f-string  (0) 2024.12.13
[Python]리스트의 슬라이싱, 정렬  (1) 2024.12.09
[Python]함수의 매개변수  (0) 2024.11.22
[Python]map, filter, lambda  (0) 2024.11.22