1. 프로그래머스 python 코딩테스트 입문
Level 0. n보다 커질 때까지 더하기
정수 배열 numbers와 정수 n이 매개변수로 주어집니다. numbers의 원소를 앞에서부터 하나씩 더하다가 그 합이 n보다 커지는 순간 이때까지 더했던 원소들의 합을 return 하는 solution 함수를 작성해 주세요.
오답 확인 (1, 2, 3 비교)
1. while 오답
def solution(numbers, n):
a = 0
while a < n:
for i in numbers:
a = a + i
return a
def solution(numbers, n):
a = 0
index = 0 # 리스트에서 값을 가져오기 위한 인덱스 초기화
while a <= n: # a가 n보다 커질 때까지 반복
a += numbers[index] # 현재 인덱스의 값을 a에 더하기
index += 1 # 다음 값을 가져오기 위해 인덱스를 증가
return a
2. for if 오답
def solution(numbers, n):
a = 0
for i in numbers:
if a < n:
a = a + i
else:
return a
3. for if 오답
def solution(numbers, n):
a = 0
for i in numbers:
if a < n:
a = a + i
return a
for문
이 a>n
을 만족했을때도 계속 돌아가는게 문제임.정답
def solution(numbers, n): a = 0 for i in numbers: a = a + i if a > n: return a
- 이건 먼저 더하고, if문 조건상 작으면 더하고 작으면 더하고, 커지면 그 후에 if에서 a가 n보다 큰 경우 즉시 return하는 코드라서 가장 깔끔하다.
for문
도 여러번 돌지 않고, retrun으로 즉시 종료된다.