뚝딱햄 탈출기

[Python][프로그래머스 lv.0] 120809. 배열 두 배 만들기 : for문, 리스트 컴프리헨션 본문

Algorithm & Data structure/알고리즘 문제 풀이

[Python][프로그래머스 lv.0] 120809. 배열 두 배 만들기 : for문, 리스트 컴프리헨션

hyrmzz1 2023. 10. 3. 04:35

내 풀이

첫번째 풀이 & 보완할 점

def solution(numbers):
    answer = []
    for i in range(len(numbers)):
        answer.append(numbers[i] * 2)
    return answer

인덱스 값을 순서대로 호출하는 for문을 이용해 정수 배열 numbers의 각 원소에 접근하고, 각 원소에 2를 곱한 값을 answer 배열에 추가해야겠다고 생각했다.
그래서 len으로 리스트의 길이를 구하고, range에 넣어 0부터 len - 1까지의 인덱스로 numbers의 원소들을 구했다. 

그러나 in 뒤에는 리스트, 튜플, 문자열 등이 들어갈 수 있기 때문에 len(numbers)과 인덱스를 통해 데이터를 찾지 않아도 된다.

in 뒤에 리스트명 또는 리스트를 넣으면, 해당 리스트의 모든 원소에 순서대로 접근할 수 있다.

# for문과 리스트 함께 사용하기 1
list = [38, 21, 53, 62, 19]

for i in list:
	print(i)
    
'''
실행 결과
38
21
53
62
19
'''

# for문과 리스트 함께 사용하기 2
for i in [1,2,3,4,5]:
	print(i)

'''
실행 결과
1
2
3
4
5
'''

따라서 아래와 같이 수정할 수 있다.

def solution(numbers):
    answer = []
    for i in numbers:
        answer.append(i * 2)
    return answer

두번째 풀이

리스트 컴프리헨션을 이용하면 더욱 간결하게 작성할 수 있다.

리스트 컴프리헨션은 대괄호([]) 안에 조건분과 반복문을 넣는 방식으로 리스트를 초기화할 수 있다.

따라서 리스트 컴프리헨션을 이용한다면 리스트를 미리 초기화할 필요가 없고, for문을 이용해 리스트에 원소를 추가할 때 append() 함수를 사용할 필요도 없다. 한 줄로 리스트에 원소를 추가하는 for문을 작성할 수 있다!

def solution(numbers):
    answer = [i * 2 for i in numbers] 
    return answer

 


기억할 것

  • for문에서 in 뒤에는 리스트, 튜플, 문자열 등이 들어갈 수 있다.
  • for문에서 in 뒤에 리스트 또는 리스트명이 들어가면 리스트의 원소 각각에 순서대로 접근할 수 있다.
  • 조건문과 반복문을 사용해 리스트에 원소를 추가해야 한다면 리스트 컴프리헨션을 이용하자.

참고할만한 포스팅

2023.10.01 - [Programming language/Python] - [Python] 리스트 자료형 List data type

 

[Python] 리스트 자료형 List data type

이것이 취업을 위한 코딩 테스트다 with 파이썬 - 나동빈 저 APPENDIX A. 코딩 테스트를 위한 파이썬 문법 정리 내용 자료형 (데이터 타입, data type) 종류 수 (Number) 리스트 (List) 문자열 (String) 튜플 (Tupl

hyrmzz1.tistory.com

2023.10.02 - [Programming language/Python] - [Python] 반복문 : while문, for문

 

[Python] 반복문 : while문, for문

반복문이란? 반복문은 특정한 소스코드를 반복적으로 실행하고자 할 때 사용한다. While문 while문은 조건문이 참일 때에 한해 반복적으로 코드가 수행된다. # 1부터 9까지 각 정수의 합을 계산하기

hyrmzz1.tistory.com

 


https://school.programmers.co.kr/learn/courses/30/lessons/120809?language=python3 

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

Comments