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.append([5] * 5)
- answer += [i] * i를 사용하면 리스트의 각 숫자를 원하는 만큼 병합하여 평평한(flat)리스트를 만들 수 있다.
- 만약 append를 사용했더라면
다른 사람이 제출한 코드
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에 추가
이 코드는 위 코드와 동일하다.
'파이썬_알고리즘(코딩테스트) > level0' 카테고리의 다른 글
| level0_꼬리 문자열 (0) | 2024.11.28 |
|---|---|
| level0_배열의 길이에 따라 다른 연산하기 (0) | 2024.11.26 |
| level0_배열에서 문자열 대소문자 변환하기 (1) | 2024.11.18 |
| level0_짝수 홀수 개수 (0) | 2024.11.18 |
| level0_0 떼기 (0) | 2024.11.12 |