10진법 3x 마을에서 쓰는 숫자 10진법 3x 마을에서 쓰는 숫자 1 1 6 8 2 2 7 10 3 4 8 11 4 5 9 14 5 7 10 16 3x 마을 사람들은 3을 저주의 숫자라고 생각하기 때문에 3의 배수와 숫자 3을 사용하지 않습니다. 3x 마을 사람들의 숫자는 다음과 같습니다.
정수 n이 매개변수로 주어질 때, n을 3x 마을에서 사용하는 숫자로 바꿔 return하도록 solution 함수를 완성해주세요.
import Foundation
func solution(_ n: Int) -> Int {
var arr: [Int] = []
for i in 1...100 {
if i % 3 != 0 {
arr.append(i)
}
arr.filter { !$0.description.contains("3") }
}
return arr[n-1]
}
arr.filter { !$0.description.contains("3") }
부분에서 필터링 결과를 활용하지 않아서 원래 배열은 수정되지 않았다.while
문이 더 적합했다.filter
메서드를 제대로 활용하지 않아 숫자 '3'이 포함된 값을 걸러내지 못했음.import Foundation
func solution(_ n: Int) -> Int {
var arr: [Int] = []
var i = 1
while arr.count < n {
if i % 3 != 0 && !i.description.contains("3") {
arr.append(i)
}
i += 1
}
return arr[n - 1]
}
filter
메서드는 배열의 특정 조건을 만족하는 요소들만을 새로운 배열로 반환한다. 필터링된 결과를 기존 배열에 반영하려면 새로운 변수에 할당해야 한다.for
대신 while
루프를 사용해 필요할 때까지 반복할 수 있도록 하는 것이 중요했다.filter
메서드를 사용할 때 반환 값을 배열에 반영하거나 새로 할당해야 함을 잊지 말아야 한다.