728x90
주말동안 너무 술을 많이 마셔서 아직도 속이 안좋다.
당분간 소주는 입에도 안댈듯... 초록병 제대로 걸렸다...
이 문제는 순서를 고려하여 모든 값을 다 더해준뒤 중복값만 없애주면 된다.
물론 Swift는 Set 배열이 있기에 이를 이용하여 중복값을 편하게 제거할 수 있다.
이 문제를 풀면서 생각한 논리적 흐름
- Set 배열인 ans를 선언해준다.
- [i] 번째 원소부터 [j]번째 값, [j]번째 값 + [j+1]번째 값... 이렇게 누적하여 값을 Set에 넣어준다.
- idx의 범위 오류를 막기 위해 elements.count로 나누어준다.
- 이때 발생하는 나머지 값은 결국 더해줘도 기존 값들에 포함되어 있기 때문에 Set의 자동중복에서 걸린다.
- 이렇게 끝까지 차례대로 다 더해주면 끝
* 코드
import Foundation
func solution(_ elements:[Int]) -> Int {
var ans: Set<Int> = []
for i in 0..<elements.count {
var value = 0
for j in 0..<elements.count {
let idx = (i + j) % elements.count
value += elements[idx]
ans.insert(value)
}
}
return ans.count
}
정리(Today I Learned)
- 없음
'TIL > 알고리즘 공부' 카테고리의 다른 글
프로그래머스 Lv. 2 Swift 알고리즘 - 땅따먹기 (0) | 2023.01.16 |
---|---|
프로그래머스 Lv. 2 Swift 알고리즘 - 스킬트리 (0) | 2023.01.16 |
프로그래머스 Lv. 2 Swift 알고리즘 - [3차] n진수 게임 (3) | 2023.01.13 |
프로그래머스 Lv. 2 Swift 알고리즘 - 주차 요금 계산 (0) | 2023.01.12 |
프로그래머스 Lv. 2 Swift 알고리즘 - 오픈채팅방 (0) | 2023.01.11 |