728x90
반응형
SMALL
프로그래머스 LEVEL1 최상단에 있는 문제중 하나인 추억점수 문제입니다.
오랜만에 Swift 알고리즘 푸려고 들어왔다가 멘탈 잠깐나가서 이래저래 다시 감 좀 찾고 푸려니 그나마 잘 풀렸습니다.
이전에 해맷던 부분
- 이차원 배열로 주어진 입력값을 제대로 활용 할 방법을 몰랐다.
해결책
- map 을 다른 문제에서 많이 써보면서 익숙해지고, forEach문도 익숙해지면서 배열도 map을 사용해서 하나씩 그 값을 가지고 올 수 있다는 걸 전에는 몰랐다...
문제는 대충 이렇다..
해결 과정
- 문제파악
- 각각의 이름에 대한 점수를 부여하고 photo 배열에서 그 값을 더한 값을 새로운 배열에 넣는다.
- 모든 이름에 대한 변수를 만들고 이름을 넣어도 되지만, 이 문제는 기본적으로 Dictionary를 사용해서 메핑하는 것이 가장 효율적으로 보인다
- 코드
func solution(_ name:[String], _ yearning:[Int], _ photo:[[String]]) -> [Int] {
var result: [Int] = []
// 점수 Dictionary 생성 및 값 넣기
var dic: [String : Int] = [:]
for i in 0...name.count - 1 {
dic[name[i]] = yearning[i]
}
// photo를 mapping 하여 score 구하기
// map 메소드를 2중으로 사용해도 될 듯 하다.
photo.forEach { picture in
var score = 0
picture.map { name in
score += dic[name] ?? 0
}
result.append(score)
}
return result
}
728x90
반응형
LIST
'Algorithm' 카테고리의 다른 글
[알고리즘] 기초 : 백준 10926 (0) | 2023.09.30 |
---|---|
[알고리즘] 기초 : 백준 2557 (0) | 2023.09.30 |
알고리즘 Start! (0) | 2023.09.30 |
[Swift Algorithm] 프로그래머스 바탕화면 정리 (0) | 2023.05.02 |
[Swift] Programmers 대소문자 바꿔 출력하기 (0) | 2023.04.28 |