문제 설명
정수 배열 arr 과 정수 n 이 매개변수로 주어집니다. arr의 길이가 홀수라면 arr의 모든 짝수 인덱스 위치에 n을 더한 배열을, arr의 길이가 짝수라면 arr의 모든 홀수 인덱스 위치에 n을 더한 배열을 return 하는 solution 함수를 작성해주세요.
https://school.programmers.co.kr/learn/courses/30/lessons/181854
제한사항
- 1 ≤ arr의 길이 ≤ 1,000
- 1 ≤ arr의 원소 ≤ 1,000
- 1 ≤ n ≤ 1,000
어떻게 접근할까?
1. arr의 길이가 홀수인지 짝수인지를 판별
2. 인덱스 위치를 떨어뜨려서 생각해보기
3. 인덱스 위치에 n 을 더한 배열
- 인덱스 위치가 홀수-> arr 의 짝수 인덱스 위치 +n
- 인덱스 위치가 짝수-> arr의 홀수 인덱스 위치+n
인덱스 위치에 접근하기 위해서 파이썬 내장함수인 enumerate 를 사용하기로 했다.
enumerate
반복 가능한 객체를 인자로 받아서 해당 객체의 요소들을 순회하면서, 각 요소의 인덱스와 값을 순서쌍으로 반환한다.
enumerate(iterable, start=0)
- iterable: 반복 가능한(iterable) 객체, 예를 들면 리스트(list), 튜플(tuple), 문자열(str), 딕셔너리(dictionary)
- start: 인덱스의 시작값
enumerate 와 for 루프를 함께 사용하면 인덱스 값을 함께 반환할 수 있다.
# 예시
days=['월','화','수','목','금','토','일']
enumerate_days=enumerate(days)
for index, day in enumerate_days:
print(index, day)
#>> result
0 월
1 화
2 수
3 목
4 금
5 토
6 일
이렇게 for 루프를 함께 써서 인덱스와 값 동시에 접근할 수 있다.
그렇다면 문제를 다시 생각해보자
우리는 인덱스에 접근을 해야한다.
첫번째로, 배열의 길이가 홀짝수인지를 판별하기 위해서
2로 나누었을 때 짝수면 나머지가 없고, 홀수면 나머지가 1이 생긴다는 것을 알고있다.
이를 활용하여 홀짝을 판별해줄 것이다.
코드풀이
def solution(arr, n):
for index, value in enumerate(arr):
if len(arr) % 2 == 0:
if index % 2 == 1:
arr[index] += n
else:
if index % 2 == 0:
arr[index] += n
return arr
'
'Algorithm' 카테고리의 다른 글
[Python] 프로그래머스 트레이닝 챌린지 D2 (0) | 2024.07.16 |
---|---|
[Python] 프로그래머스 트레이닝 챌린지 D1 (0) | 2024.07.15 |
[Python] 프로그래머스 해시-베스트 앨범 (0) | 2024.07.13 |
[Python] 프로그래머스 해시 - 의상 (1) | 2024.07.12 |
[Python] 프로그래머스 해시- 전화번호 목록 (0) | 2024.07.11 |