▷ 코드카타

[내일배움캠프 _ QA/QC 5기] 22일차 _ 코드카타 25문항

qc-standard 2026. 4. 7. 11:29

⊙ 코드카타

25) 문제 : array의 각 element 중 divisor로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성해주세요. divisor로 나누어 떨어지는 element가 하나도 없다면 배열에 -1을 담아 반환하세요.

= 배열의 각 요소 중 약수로 나누어 떨어지는 값을 오름차순으로 정렬한 배열을 반환하는 함수, solution을 작성하세요
약수로 나누어 떨어지는 요소가 하나도 없다면 배열에 -1을 담아 반환하세요

 

생각 과정 :

● answer이라는 빈 리스트 만든다
    → for a in range()를 이용해 배열 반복을 만든다
    → arr % divisor ==0 일 때, divisor을 return
    → elif를 이용해 -1을 return하면 되지 않나?

def solution(arr, divisor):
    answer = []
    for a in arr:
        if a % divisor == 0:
           return answer
        else :
           return [-1]
           
    return answer


result = solution([5,9,7,10], 5)
print(result)
result = solution([2, 36, 1, 3], 1)
print(result)
result = solution([3,2,6], 10)
print(result)
[]
[]
[-1]
→ 뭐가 문제인 것이지?


def solution(arr, divisor):
    answer = []
    for a in arr:
        if a % divisor == 0:
            answer.append(a)

    if not answer:
        return [-1]
   
    answer.sort()
    return answer


result = solution([5,9,7,10], 5)
print(result)
result = solution([2, 36, 1, 3], 1)
print(result)
result = solution([3,2,6], 10)
print(result)
answer.append(a)
#apped(a)는 a변수를 answer 빈바구니에 추가하되 반복문을 끝내지 않음


    if not answer:
# 반복문이 끝난 뒤 answer 리스트가 비어있는지 확인하는 조건문
        return [-1]
# 아무것도 못 담으면 [-1] 반환

   
    answer.sort()
#answer리스트 자체를 정렬


[5, 10]
[1, 2, 3, 36]
[-1]

 

 

 

 

 

 

 

sort() sorted()
nums = [3, 1, 2]
nums.sort()
print(nums)  
nums = [3, 1, 2]
new_nums = sorted(nums)
print(nums) 
print(new_nums) 
[1, 2, 3]  [3, 1, 2]
 [1, 2, 3]
기존 리스트의 재정렬 기존 리스트를 놔두고
복사한 리스트를 재정렬