► Swift/Programmers

[Programmers] Swift 알고리즘 | Lv.0 배열의 유사도

다람트리 2024. 1. 30. 20:53
반응형
import Foundation

func solution(_ s1:[String], _ s2:[String]) ->Int{Set(s1).intersection(s2).count}


print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2
print(solution(["n", "omg"],["m", "dot"]))                      // expected result: 0

🔒 문제 설명

배열이 얼마나 유사한지 확인해보려고 합니다. 문자열 배열 s1 s2 주어질 같은 원소의 개수를 return하도록 solution 함수를 완성해주세요.


🔒 제한사항  

  • 1 ≤ s1, s2의 길이 ≤ 100
  • 1 ≤ s1, s2의 원소의 길이 ≤ 10
  • s1과 s2의 원소는 알파벳 소문자로만 이루어져 있습니다
  • s1 s2 각각 중복된 원소를 갖지 않습니다.

🔒 입출력 예

s1 s2 result
["a", "b", "c"] ["com", "b", "d", "p", "c"] 2
["n", "omg"] ["m", "dot"] 0

🔒 입출력 예 설명

입출력 예 #1

  • "b"와 "c"가 같으므로 2를 return합니다.

입출력 예 #2

  • 같은 원소가 없으므로 0 return합니다.

🔒 유의사항

  • 연속된 숫자도 각각  자리 숫자로 취급합니다.

 

 

🔐 solution of mine

for 문

Array.contains() → Array에 String이 있는지 확인하는 방법 (output: boolean)

func solution(_ s1:[String], _ s2:[String]) ->Int{
    var answer:Int = 0
    for i in s1 {
        if s2.contains(i){answer += 1}
    }
    return answer
}


print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2
print(solution(["n", "omg"],["m", "dot"]))                      // expected result: 0

 


 

🔐 solution of others

Array.map()Array.contains(_:)Array.filter{}

Array.count

import Foundation

func solution(_ s1:[String], _ s2:[String]) ->Int{
    return s1.map(s2.contains(_:)).filter{$0}.count
}

print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2
print(solution(["n", "omg"],["m", "dot"]))                      // expected result: 0

 

♦︎ 해설집

import Foundation

func solution(_ s1:[String], _ s2:[String]) ->Int{
    print(s1.map(s2.contains(_:)))              // output: [false, true, true]
    print(s1.map(s2.contains(_:)).filter{$0})   // output: [true, true]
    return s1.map(s2.contains(_:)).filter{$0}.count
}

print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2

 

🔐 solution of others

Array.filter{}

Array.contains()

Array.count

import Foundation

func solution(_ s1:[String], _ s2:[String]) ->Int{
    return s1.filter{s2.contains($0)}.count
}

print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2
print(solution(["n", "omg"],["m", "dot"]))                      // expected result: 0

 

♦︎ 해설집

import Foundation

func solution(_ s1:[String], _ s2:[String]) ->Int{
    print(s1.filter{s2.contains($0)})   		// output: ["b", "c"]
    return s1.filter{s2.contains($0)}.count
}

print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2

 

🔐 solution of others

Set()

Set.intersection()

Set.count

import Foundation

func solution(_ s1:[String], _ s2:[String]) ->Int{
    return s1.filter{s2.contains($0)}.count
}

print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2
print(solution(["n", "omg"],["m", "dot"]))                      // expected result: 0

 

♦︎ 해설집

import Foundation

func solution(_ s1:[String], _ s2:[String]) ->Int{
    print(s1)                                   // output: ["a", "b", "c"]
    print(Set(s1).intersection(s2))             // output: ["c", "b"]
    return Set(s1).intersection(s2).count
}

print(solution(["a", "b", "c"],["com", "b", "d", "p", "c"]))    // expected result: 2

 

 

 


 
반응형