๋ฌธ์ ์ฐธ๊ณ
Foma์ ํ์ด
์ฃผ์ด์ง s๋ {{}} <- ๋ค์ ํ์์ผ๋ก ๋์ด์์ต๋๋ค.
์ฌ๊ธฐ์ {...} ๊ฐ์ฅ ๋ฐ๊นฅ ๋๊ดํธ ์ {...} ์ซ์๋ค์ ๊ตฌ๋ถํด๋ด์ด์ผ ํ๋๋ฐ์.
๋จผ์ ๋ฐ๊นฅ{..}์์ {...}์ ์ซ์๋ {...}์ "{"์ ๊ฐฏ์๋ก count์์๋ฅผ ๋ง๋ค์ด์ค๋๋ค.
=> let count = s.filter{$0 == "{"}.count
{...}๋ฅผ ๋ฐฐ์ด๋ก ๋ฐ๊พธ์ด ๋ด์์ค ๋ณ์๋ ๋ง๋ค์ด์ค๋๋ค.(count-1๋งํผ ํฌ๊ธฐ๋ฅผ ์ ํด์ค๋๋ค.)
=> var numbersArray = Array(repeating: [Int](), count: count-1)
๋ฐฉ๋ฒ์ ๋จผ์ s์์ "{"๋ฅผ ์ ๊ฑฐํด์ค๋๋ค. ex) "{{2},{2,1},{2,1,3},{2,1,3,4}}" -> "2},2,1},2,1,3},2,1,3,4}}"
=> s.replacingOccurrences(of: "{", with: "")
๊ทธ ๋ค์์ "}"๋ฅผ ๊ธฐ์ค์ผ๋ก ๊ฐ๊ฐ ๋๋์ด์ค๋๋ค. ex) "2",2,1","2,1,3","2,1,3,4"
=> .components(separatedBy: "}")
๊ทธ ๋ค์ for๋ฌธ์ ์ด์ฉํด numbers์ ์ซ์๋งํผ ๋ฐ๋ณตํด์ค๋๋ค.
=> for i in 0..<numbers.count{...}
๊ทธ๋ฆฌ๊ณ numbers์์ ๋ฌธ์ฅ๋ค์ ","๊ธฐ์ค์ผ๋ก ๋๋์ด์ค๋๋ค.
=> let number = numbers[i].components(separatedBy: ",")
๊ทธ๋ฆฌ๊ณ numbers์์ ๋ฐฐ์ด๋ค์ ๋ฌธ์ฅ์ค ๊ณต๋ฐฑ์ด ์๋๋ผ๋ฉด numbersArray์ ํด๋น i์๋ฆฌ์ ๋ฌธ์ฅ์ Int๋ก ํ๋ณํ์์ผ ์ฐจ๋ก๋ก ๋ฃ์ด์ค๋๋ค.
=> for n in number {
if n != "" {
numbersArray[i].append(Int(n)!)
}
}
์ฌ๊ธฐ๊น์ง ํ๊ฒ๋๋ฉด numbersArray์ [[2], [2, 1], [2, 1, 3], [2, 1, 3, 4]] ์ด ๋ด๊ธฐ๊ฒ ๋ฉ๋๋ค.
์ด์ ์ด ๊ตฌ๋ถํด๋ธ ๋ฐฐ์ด๋ค์ ํํ๋ก ๋ฐ๊ฟ์ค์ผํ๋๋ฐ์.
๊ท์น์ ๋ฐฐ์ด์ด 1๊ฐ๋ถํฐ numbersArray์ ๋ด๊ธด ์ซ์๊น์ง ์ถ๊ฐํด์ค ์ซ์๋ฅผ ์ ์ธํ ๋๋จธ์ง ํ๊ฐ์ ์ซ์๋ฅผ answer์ ์๋ฆฌ์ ์ถ๊ฐ์์ผ์ค๋๋ค.
ex) ๋ฐฐ์ด์ด 1๊ฐ์ธ๊ฒ -> [2] answer[0]์ 2์ถ๊ฐ
๋ฐฐ์ด์ด 2๊ฐ์ธ๊ฒ ->[2,1] answer[1]์ ์ถ๊ฐ๋ 2๋ฅผ ์ ์ธํ ์ซ์ 1์ ์ถ๊ฐ
...
ํ๊ฒ๋๋ฉด answer => [2,1,3,4]๊ฐ ๋ฉ๋๋ค.
=> for i in 1...numbersArray.count {
let a = numbersArray.filter{$0.count == i}.first!.filter{!answer.contains($0)}
answer[i-1] = a.first!
}
๊ทธ๋ฆฌ๊ณ ๋ง์ง๋ง์ผ๋ก answer์ ๋ฐํ์์ผ์ค๋๋ค.
=> return answer
์ ์ฒด์ฝ๋
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
import Foundation
func solution(_ s:String) -> [Int] {
let count = s.filter{$0 == "{"}.count
var numbersArray = Array(repeating: [Int](), count: count-1)
let numbers = s.replacingOccurrences(of: "{", with: "").components(separatedBy: "}")
var answer = Array(repeating: 0, count: count-1)
for i in 0..<numbers.count{
let number = numbers[i].components(separatedBy: ",")
for n in number {
if n != "" {
numbersArray[i].append(Int(n)!)
}
}
}
for i in 1...numbersArray.count {
let a = numbersArray.filter{$0.count == i}.first!.filter{!answer.contains($0)}
answer[i-1] = a.first!
}
return answer
}
|
cs |
'๐ Problem Solution > Programmers' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2019 KAKAO BLIND RECRUITMENT ์คํ์ฑํ ๋ฐฉ Swift (0) | 2020.09.24 |
---|---|
ํ๋ก๊ทธ๋๋จธ์ค ์์ด ๋๋ง์๊ธฐ Swift (0) | 2020.09.24 |
2020 ์นด์นด์ค ์ธํด์ฝ ์์ ์ต๋ํ Swift (0) | 2020.09.03 |
ํ๋ก๊ทธ๋๋จธ์ค ํ๊ฒ ๋๋ฒ Swift (0) | 2020.08.31 |
ํ๋ก๊ทธ๋๋จธ์ค ์ต์๊ฐ ๋ง๋ค๊ธฐ Swift (0) | 2020.08.28 |
๋๊ธ