배열의 길이에 따라 다른 연산하기
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
language = swift
배열의 길이와 인덱스의 홀짝성(?)에 따라 값을 반환하도록 해야 하는데,
enumerated 함수를 사용하여 배열의 각 요소에 인덱스를 부여하고, ( → offset 사용)
map 함수를 아용하여 각 요소를 조건에 따라 변환하면 된다.
func solution(_ arr: [Int], _ n: Int) -> [Int] {
return arr.enumerated().map {
if arr.count % 2 == 1 {
return ($0.offset % 2 == 0) ? ($0.element + n) : $0.element
} else {
return ($0.offset % 2 == 0) ? $0.element : ($0.element + n)
}
}
}
- map 함수 : 기존의 데이터를 원하는 형태로 변환하는 데 사용 ( → 배열이나 컬렉션의 각 요소에 대해 특정 작업을 수행하고, 그 결과를 새로운 배열로 반환
- enumerated 함수 : 컬렉션의 각 요소와 그 요소의 인덱스를 쌍으로 묶어서 반환 ( → 이를 통해 요소의 값뿐만 아니라 위치 정보도 함께 활용)
- offset : swift의 enumerated() 함수를 사용할 때 나타나는 개념으로, 배열의 각 요소를 순회하면서 각 요소와 그 요소의 인덱스를 튜플 형태로 반환한다. 이때. offset은 해당 요소의 인덱스를 나타내며, element는 배열의 요소 자체를 나타낸다. 간단히 말해 offset은 배열 내 요소의 위치(인덱스)를 의미한다. 예를 들어, 배열이 ["사과","바나나","체리"]라면, "사과"의 offset은 0, "바나나"의 offset은 1, "체리"의 offset은 2가 된다. 오늘의 코딩 문제의 경우처럼 짝수 인덱스 (offset % 2 == 0) 요소에만 특정 값을 더할 수도 있다.
- 배열의 인덱스 reference : https://0ofkim.tistory.com/15#google_vignette
language = python
배열의 길이가 짝수 len(arr) % 2 == 0 일때
홀수 인덱스 idx % 2 == 1 에
해당 요소에 n을 더한다. arr[idx] += n
def solution(arr, n):
for idx, val in enumerate(arr):
if len(arr) % 2 == 0:
if idx % 2 == 1:
arr[idx] += n
else:
if idx % 2 == 0:
arr[idx] += n
return arr
※ 파이썬에서 소괄호()는 주로 함수를 호출할 때, 대괄호[]는 리스트와 같은 시퀀스 타입의 특정 요소에 접근할 때 사용한다.
'iOS 앱 개발자 프로젝트 > 알고리즘 코드카타' 카테고리의 다른 글
[Algorithm] 달리기 경주 (w/ Swift) (0) | 2024.03.26 |
---|---|
[Algorithm] 개인정보 수집 유효기간 (w/ Swift & Python) (0) | 2024.03.25 |
[Algorithm] 배열 두 배 만들기 (w/ Swift & Python) (0) | 2024.03.23 |
[Algorithm] 햄버거 만들기 (w/ Swift & Python) (0) | 2024.03.22 |
[Algorithm] 둘만의 암호 (w/ Swift & Python) (0) | 2024.03.21 |