추억 점수
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
1. [name: yearning] Dictionary 생성
(string 타입 key 값은 그리운 사람의 이름, Int 타입 value 값은 그리움 점수 )
2. 사진마다 dict에 대입
3. 합산한 점수들의 배열(yeon)을 출력
func solution(_ name: [String], _ yearning: [Int], _ photo: [[String]]) -> [Int] {
var dict = [String: Int]() // 이름과 그리움 값을 저장하는 딕셔너리
for i in 0..<name.count { // 이름 배열을 순회하며 딕셔너리에 이름과 그리움 값 저장
dict[name[i]] = yearning[i]
}
var yeon = [Int]() // 각 사진의 총 그리움 점수를 저장할 배열
for i in 0..<photo.count { // 사진 배열을 순회
let arr = photo[i] // 현재 사진
// 현재 사진에 있는 각 이름에 대해 그리움 값을 찾아 합산
let points = arr.map { (name: String) -> Int in
if let value = dict[name] { // 이름이 딕셔너리에 있으면 해당 그리움 값을 반환
return value
} else { // 이름이 딕셔너리에 없으면 0 반환
return 0
}
}
yeon.append(points.reduce(0, +)) // 현재 사진의 총 그리움 점수를 yeon 배열에 추가
}
return yeon // 각 사진의 총 그리움 점수 배열 반환
}
if dict[name] == nil { return 0 } else { return dict[name]! }
△ ?? 연산자를 사용하지 않고 조건문을 통해 구현했다. Nil-Coalescing 연산자를 사용하면 부분을 더 간결하게 아래처럼 표현할 수 있다.
return dict[name] ?? 0
'iOS 앱 개발자 프로젝트 > 알고리즘 코드카타' 카테고리의 다른 글
[Algorithm] OX 문제 (0) | 2024.05.06 |
---|---|
[Algorithm] a와 b 출력하기 (w/ Swift & Python) (0) | 2024.04.22 |
[Algorithm] 짝수 홀수 개수 (w/ Swift) (2) | 2024.04.11 |
[Algorithm] ad 제거하기 (w/ Swift & Python) (4) | 2024.04.10 |
[Algorithm] 콜라 문제 (w/ Swift) (2) | 2024.04.09 |