Where who wants to meet someone
수열과 구간 쿼리 4 본문
728x90
문제
https://school.programmers.co.kr/learn/courses/30/lessons/181922
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
내 답안 / 다른 사람들의 답안
import Foundation
func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] {
var result = arr
for query in queries {
let (s, e, k) = (query[0], query[1], query[2])
for i in s...e {
if i % k == 0 {
result[i] += 1
}
}
}
return result
}
- queries를 for문으로 돌면서 s, e, k를 정의하고, s <= i <= e 범위 내에서 k의 배수일 경우 result에 값을 더했다.
import Foundation
func solution(_ arr:[Int], _ queries:[[Int]]) -> [Int] {
var arr = arr
queries.forEach {
let (s, e, k) = ($0[0], $0[1], $0[2])
(s...e).forEach { if $0 % k == 0 { arr[$0] += 1 } }
}
return arr
}
- for문 대신 forEach를 사용하고, (s...e) 배열에서 바로 또 forEach를 사용하는 방식으로 문제를 풀 수 있었다.(다른 사람들의 답안)
- 둘 다 같은 방식으로 문제를 해결하고 있고, for문이냐 forEach냐 차이기 때문에 시간복잡도는 동일하다.
- 둘의 차이는 break나 continue, return을 사용하는 데 있다(https://developer.apple.com/documentation/swift/array/foreach(_:))
점수: +3
'프로그래머스 알고리즘 문제 기록 > 코딩 기초 트레이닝' 카테고리의 다른 글
콜라츠 수열 만들기 (0) | 2024.01.16 |
---|---|
카운트 업 (0) | 2024.01.16 |
배열 만들기 2 (0) | 2024.01.16 |
수열과 구간 쿼리 2 (0) | 2024.01.12 |
수열과 구간 쿼리 3 (0) | 2024.01.11 |