본문 바로가기
알고리즘 풀이

[algorithm] 프로그래머스: 배열 두 배 만들기

by 째깍단 2023. 4. 6.

답: 

더보기
def solution(numbers):
    array =[]
    for num in numbers:
        num = num * 2
        array.append(num)
    return array

 

 

 

문제 분석 및 해석

배열이 주어질때, 정수 값 2배 배열 만들기

 

1)list 의 요소를 꺼내어 각각 곱해주고,  : for문, 연산자 *

2)곱한 것을 빈 리스트에 채워 리턴해준다. append()

 

+append 외에도 방법이 있을까?

 

 

과정1.

전체적인 틀과 for문을 먼저 작성하였다.

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [1, 2, 100, -99, 1, 2, 3]

def solution(numbers):
    for num in numbers:
    num = num * 2

    #여기에 바꾸어야하는 numbers를 넣어준다

    return print(numbers)

solution(numbers1)
solution(numbers2)

 

 

과정2

이후 빈 리스트 추가, append로 array에 2를 곱한 num을 담아주었다.

 

주석으로도 달았지만, return array만하면 함수사용시 반환되어 array에 값은 담겨도

사용자의 눈에 보이게 출력시켜주지는 않는 함정이 있다. print() 

 

numbers1 = [1, 2, 3, 4, 5]
numbers2 = [1, 2, 100, -99, 1, 2, 3]

array = []

def solution(numbers):
	for num in numbers:
        num = num * 2
        array.append(num)
	return print(array)
	#print안붙이면 array에 넣어지기만 하고 출력이 안된다!

solution(numbers1)
solution(numbers2)

#결과: [2, 4, 6, 8, 10]
#결과: [2, 4, 6, 8, 10, 2, 4, 200, -198, 2, 4, 6]

 

 

각각 돌릴때는 문제가 없지만 한 번에 실행하려하니 결과값에 문제가 생겼다

 

방법 1. 리스트를 초기화해주는 부분을 함수안에 넣는다

함수 바깥에 리스트가 초기화되지 않기때문으로 판단했고, 빈 리스트를 함수 안으로 옮겼다!

def solution(numbers):
    array = []
    for num in numbers: ...

 

결과 : 깔끔!

[2, 4, 6, 8, 10]

[2, 4, 200, -198, 2, 4, 6]

 

 

 

떠올린 방법 2. 아예 리스트 요소를 대체해준다

 

시도1)

replace()로 바꿔보려고 했는데

replace는 문자열만 조작 가능한 함수였다;

AttributeError: 'int' object has no attribute 'replace'

 

 

=이건 과제 제출후 주말에  더 연구하자

list 활용으로 연결하여 같이 공부하면 좋을 것 같다.

 

 

print()와 return 기능을 보기,,

 


느낀점: 

금방금방 풀어내는 나 자신 대견해!

 

하지만 아직 활용용례가 아주 좁은 곳에서 빙빙 돌고 있는 느낌이 든다.

 

꾸준히 추가공부를 하면서.. 이미 풀었던 문제도 다른 방법으로 풀이할 수 있는지 연구해보아야겠다.