level0_배열의 길이에 따라 다른 연산하기
2024. 11. 26. 21:16ㆍ파이썬_알고리즘(코딩테스트)/level0

내가 제출한 코드
def solution(arr, n):
if len(arr) % 2 == 1:
arr = [x+ n if i % 2 == 0 else x for i,x in enumerate(arr)]
else:
arr=[x+ n if i % 2 == 1 else x for i,x in enumerate(arr)]
return arr
- if len(arr) % 2 == 1
- 만약에 arr의 길이가 홀수라면
- arr = [x+ n if i % 2 == 0 else x for i,x in enumerate(arr)]
- enumerate(arr)는 arr 배열의 요소( x)와 해당 요소의 인덱스(i)를 동시에 제공한다.
- if i % 2 == 0
- arr배열 요소의 인덱스가 짝수라면
- x+n
- arr배열의 요소에 n을 더한다.
- else x
- arr배열 요소의 인덱스가 홀수라면 x
else문도 위와 동일하다.
다른 사람이 제출한 코드1
내가 한줄...코드를 보았다...
def solution(arr, n):
return [x + n*((len(arr)+i) % 2) for i,x in enumerate(arr)]
감탄....
만만세..

- x + n *((len(arr)+i)%2)
- arr의 리스트의 길이와 인덱스를 더한 값을 2로 나눈 나머지
- 0 또는 1의 값을 가진다.
다른 사람이 제출한 코드2
사실... 나도 range 범위를 쓰려고 했는데.. 머리는 아는데 손이 움직여지지 않았던 코드였다.
def solution(arr, n):
N=len(arr)
if N % 2 : # 홀수라면(TRUE는 1)
for i in range(0,N,2):
arr[i] += n # 난.. 여기서 막혀버렸다..
else:
for i in range(1,N,2):
arr[i] += n
return arr
'파이썬_알고리즘(코딩테스트) > level0' 카테고리의 다른 글
| level0_배열의 원소 삭제하기 (1) | 2024.11.28 |
|---|---|
| level0_꼬리 문자열 (0) | 2024.11.28 |
| level0_배열의 원소만큼 추가하기 (0) | 2024.11.25 |
| level0_배열에서 문자열 대소문자 변환하기 (1) | 2024.11.18 |
| level0_짝수 홀수 개수 (0) | 2024.11.18 |