본문 바로가기
Programming Practice/Python

프로그래머스 <배열의 원소만큼 추가하기>

by TAMIK 2025. 4. 17.
728x90
def solution(arr):
    x = []
    for i in arr:
        x += arr[i]*int(arr[i])
    return x

 

 

 

 

리스트 컴프리헨션 중첩 구조

def solution(arr):
    return [i for i in arr for _ in range(i)]

arr의 각 요소 i를 i번 반복해서 리스트에 담는다.

[값 for 바깥루프 for 안쪽루프] 구조

[i...] 결과 리스트에 넣을 값은 i다.

[.. for i in arr ..] 바깥루프 : arr의 각 요소 가져오기

[... for _ in range(i)] 안쪽루프 : i만큼 반복하기

[리턴값 for 바깥요소 in 컬렉션 for 반복 in range(n)]
#리스트 '컬렉션'의 각 원소 '바깥요소'를 n번 '반복'해서 리턴값을 한 리스트로 펼친다.


ex)
return [i for i in arr if i % 2 == 0 for _ in range(i)]
#짝수만 i번 반복해서 펼치는 리스트

return [i**2 for i in arr if i % 2 == 0]
#짝수만 제곱해서 리스트에 담기

"""
3의 배수는 ff
5의 배수는 bb
둘 다는 fb
"""
return ["fb" if i % 15 == 0 else
	"ff" if i % 3 == 0 else
    "bb" if i % 5 == 0 else
    str(i)
    for i in range(1, n+1)
    ]
728x90