ํ๋ก๊ทธ๋๋จธ์ค - ํํ(Swift)
ํ๋ก๊ทธ๋๋จธ์ค - ํํ(Swift)
๋ฌธ์ ์ค๋ช
https://school.programmers.co.kr/learn/courses/30/lessons/64065
ํ๋ก๊ทธ๋๋จธ์ค
์ฝ๋ ์ค์ฌ์ ๊ฐ๋ฐ์ ์ฑ์ฉ. ์คํ ๊ธฐ๋ฐ์ ํฌ์ง์ ๋งค์นญ. ํ๋ก๊ทธ๋๋จธ์ค์ ๊ฐ๋ฐ์ ๋ง์ถคํ ํ๋กํ์ ๋ฑ๋กํ๊ณ , ๋์ ๊ธฐ์ ๊ถํฉ์ด ์ ๋ง๋ ๊ธฐ์ ๋ค์ ๋งค์นญ ๋ฐ์ผ์ธ์.
programmers.co.kr
๋์ ํ์ด
๋ฌธ์ ๋ฅผ ์ดํดํ๋ฉด ์ค์ค๋ก ํ์ ์ ๊ฐ๊ณ ํ์ด๋ฅผ ํ๋ ๊ฒ์ด ํ์ฌ ๋์๊ฒ ํ์ํ๋ค.
๋ฌธ์ ๋ ํํ์ ์ ์๋ฅผ ์ค๋ช ํ ํ์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง๋ ํํ์ ์ค๋ช ํ๋๋ฐ ํ์์ ํฌ์ปค์ค๋ฅผ ๋ฌ์ Input๊ณผ output์ ๋ถ์ํด์ ํ์ด๋ฐฉ๋ฒ์ ์ฐพ์์ผํ๋ค.
์ด ๋ฌธ์ ์ ํต์ฌ์ count๊ฐ ์ ์ ๊ฒ๋ถํฐ ์์๋ฅผ ๊ฐ์ง๋ค๋ ๊ฒ์ด๋ค.
์ด๋ฅผ ์ด์ฉํด์ sortํ ํ์ ์ฐจ๋ก๋๋ก ๋ฐฐ์ด์ ๋ด์๋ค.
import Foundation
func solution(_ s:String) -> [Int] {
var answer: [Int] = []
let s = s.replacingOccurrences(of: "{", with: "")
let tupleStr = s.components(separatedBy: "},").map{ $0.replacingOccurrences(of: "}", with: "")}
let tuple = tupleStr.map{ $0.components(separatedBy: ",")}.sorted(by: {$0.count < $1.count})
tuple.forEach { tup in
tup.forEach { num in
let number = Int(num)!
if !answer.contains(number) {
answer.append(number)
}
}
}
return answer
}
๋ค๋ฅธ ์ฌ๋์ ํ์ด
split์ ํตํด์ ๋ฌธ์์ด์ ์ชผ๊ฐ๊ณ Set์ subtracting์ ์ด์ฉํด์ ํด๊ฒฐํ ํ์ด์ด๋ค.
whereSeparator์๋ true๋ false๊ฐ ์ค๋ ์กฐ๊ฑด์์ด ์ค๋๋ฐ true๋ผ๋ฉด ๋ถ๋ฆฌ์๊ฐ ๋์ด Array<SubString>์ ๋ง๋ ๋ค.
์ด ํ์ด์ ์ฌ๋ฐ๋ ์ ์ ํ๋ฒ ๋ถ๋ฆฌ์ํค๊ณ map์ ํตํด ๋ถ๋ฆฌ๋ ๊ฐ๊ฐ์ ๋ํด ๋ ๋ถ๋ฆฌ๋ฅผ ์ํจ ํ Int๋ก ๋งคํํ๋ ์ ์ด๋ค.
ํ๋ฒ์ ๋ชจ๋ ๊ฑธ ์ชผ๊ฐ์๋ผ๊ณ ์๊ฐํ์๋๋ฐ ๋ถ๋ฆฌ๋ ๊ฒ์ ํ ๋๋ก ๋ ์ชผ๊ฐ๋ ์๊ฐ์ด ์ฌ๋ฐ์ด์ ๊ฐ์ ธ์๋ค.
import Foundation
func solution(_ s:String) -> [Int] {
var answer: [Int] = []
var tuple = s.split(omittingEmptySubsequences: true, whereSeparator: { "{".contains($0) }).map {
$0.split(omittingEmptySubsequences: true, whereSeparator: { "},".contains($0) }).map { Int($0)! }
}
tuple.sort(by: {$0.count < $1.count})
tuple.forEach { tup in
answer.append(Array(Set(tup).subtracting(answer)).first!)
}
return answer
}