level0_배열의 원소만큼 추가하기

2024. 11. 25. 22:18파이썬_알고리즘(코딩테스트)/level0

 

내가 제출한 코드

def solution(arr):
    answer = []
    for i in arr:
        answer+=[i] * i
    return answer
  • [i] * i 는 리스트 [i]를 i번 반복한 새로운 리스트를 생성한다.
  • 여기서 나는 사실 append랑 += 연산자랑... 매우 헷깔렸다..
    • 만약 append를 사용했더라면
      • answer.append([5] * 5)
        • 결과는 [[5,5,5,5,5]] 로 출력됐을 것이다.
    • answer += [i] * i를 사용하면 리스트의 각 숫자를 원하는 만큼 병합하여 평평한(flat)리스트를 만들 수 있다.

 

다른 사람이 제출한 코드

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

 

나는 바보같이 왜 j가 필요한거지? 계속 혼자 고민하다... ㅜㅜ 단순히 반복 횟수를 제어하는 역할을 한다는 걸 발견하고.. 눈물을 흘렸다..

result = []
for i in arr: # arr에서 각 요소를 하나씩 가져옴
    for j in range(i): # 해당 요소의 값만큼 반복 (0부터 i-1까지)
    	result.append(i) # i를 result에 추가

이 코드는 위 코드와 동일하다.