검색결과 firstIndex(of:) 를 사용하면 인덱스의 위치를 찾을 수 있다고한다.
func solution(_ seoul:[String]) -> String {
var x = seoul.firstIndex(of:"Kim")!
return "김서방은 \(x)에 있다"
}
키워드만 알면 쉽게 해결되는 문제였다.
func solution(_ seoul:[String]) -> String {
return "김서방은 \(seoul.index(of: "Kim")!)에 있다"
}
이렇게 아예 더 생략하는 방법이 있는데, 만약 프로젝트라 생각하면 x라는 것을 생략하지 않는것이 더 좋은 방법인 듯 하다.
배열 내에서 포함되지 않은 수를 찾는다.
contains와 for 구문을 사용하여 1~9까지 찾으면 될 거 같다. (0은 덧셈에서 의미 없으니)
import Foundation
func solution(_ numbers:[Int]) -> Int {
var result: Int = 0
for i in 0...9 {
let x = numbers.contains(i)
if x == false {
result += i
} return result
}
}
오류가 발생했다. 리턴을 for 구문 안에 넣으면 안 되는 것같다.
import Foundation
func solution(_ numbers:[Int]) -> Int {
var result: Int = 0
for i in 0...9 {
let x = numbers.contains(i)
if x == false {
result += i
}
}
return result
}
리턴은 마지막 괄호에 포함시키도록 하자.
다른 사람은
func solution(_ numbers: [Int]) -> Int {
return (0...9).filter { !numbers.contains($0) }.reduce(0, +)
}
필터와 리듀스를 포함해 깔끔하게 해결하였다.
정답률이 67프로짜리 여태 풀었던 문제들에 비하면 압도적으로 낮은 문제였다. 낮은 정답률답게 접근부터가 어려웠다.
우여곡절끝에
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
var result: [Int] = []
for i in 0...numbers.count-1 {
for a in i+1...numbers.count-1{
result.append(numbers[i] + numbers[a])
}
}
return Array(Set(result))
}
for문을 중첩으로 사용하고, Set을 사용하면 중복함수도 제거된다는것을 알게돼서 했으나 계속 오류가 발생했다.
겨우겨우 찾아낸 오류 발생 이유는 a for문에서 i+1 범위가 뒤에 범위보다 커지는 경우가 발생해버려서 그런것이었다. 그래서 최종적으로
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
var result: [Int] = []
for i in 0...numbers.count-1 {
if i < numbers.count-1 {
for a in i+1...numbers.count-1 {
result.append(numbers[i] + numbers[a])
}
}
}
return Array(Set(result)).sorted()
}
if문으로 감싸서 해결하였다.
다른 사람은
import Foundation
func solution(_ numbers:[Int]) -> [Int] {
var result = [Int]()
for i in 0 ..< numbers.count {
for j in i + 1 ..< numbers.count {
let num = numbers[i] + numbers[j]
if !result.contains(num) {
result.append(num)
}
}
}
return result.sorted()
}
이런식으로 !contains를 통해 중복 요소를 제거하였다. 그리고 부등호를 사용하여 내가 발생시켰던 오류를 사전에 차단하였다.