๐ ์ฝ๋ฉํ ์คํธ
โ๐ป Github
๋ฌธ์ ์ค๋ช
๋๋ฌธ์์ ์๋ฌธ์๊ฐ ์์ฌ์๋ ๋ฌธ์์ด s๊ฐ ์ฃผ์ด์ง๋๋ค. s์ 'p'์ ๊ฐ์์ 'y'์ ๊ฐ์๋ฅผ ๋น๊ตํด ๊ฐ์ผ๋ฉด True, ๋ค๋ฅด๋ฉด False๋ฅผ return ํ๋ solution๋ฅผ ์์ฑํ์ธ์. 'p', 'y' ๋ชจ๋ ํ๋๋ ์๋ ๊ฒฝ์ฐ๋ ํญ์ True๋ฅผ ๋ฆฌํดํฉ๋๋ค. ๋จ, ๊ฐ์๋ฅผ ๋น๊ตํ ๋ ๋๋ฌธ์์ ์๋ฌธ์๋ ๊ตฌ๋ณํ์ง ์์ต๋๋ค.
์๋ฅผ ๋ค์ด s๊ฐ "pPoooyY"๋ฉด true๋ฅผ returnํ๊ณ "Pyy"๋ผ๋ฉด false๋ฅผ returnํฉ๋๋ค.
์ ํ์ฌํญ
- ๋ฌธ์์ด s์ ๊ธธ์ด : 50 ์ดํ์ ์์ฐ์
- ๋ฌธ์์ด s๋ ์ํ๋ฒณ์ผ๋ก๋ง ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค.
์ ์ถ๋ ฅ ์
s | answer |
"pPoooyY" | true |
"Pyy" | false |
์ ์ถ๋ ฅ ์ ์ค๋ช
์ ์ถ๋ ฅ ์ #1
'p'์ ๊ฐ์ 2๊ฐ, 'y'์ ๊ฐ์ 2๊ฐ๋ก ๊ฐ์ผ๋ฏ๋ก true๋ฅผ return ํฉ๋๋ค.
์ ์ถ๋ ฅ ์ #2
'p'์ ๊ฐ์ 1๊ฐ, 'y'์ ๊ฐ์ 2๊ฐ๋ก ๋ค๋ฅด๋ฏ๋ก false๋ฅผ return ํฉ๋๋ค.
๋ฌธ์ ํ์ด
๋์ ํ์ด
import Foundation
func solution(_ s:String) -> Bool
{ s.filter{ $0 == "p" || $0 == "P" }.count == s.filter{ $0 == "y" || $0 == "Y" }.count }
๋ค๋ฅธ ์ฌ๋ ํ์ด
import Foundation
func solution(_ s:String) -> Bool
{
let string = s.lowercased()
return string.components(separatedBy: "p").count == string.components(separatedBy: "y").count
}
components์ filter ์ค ๋๊ฐ ๋ ๋น ๋ฅผ๊น?! ๋น๊ตํด๋ณด์.
์ ํํ ๋น๊ต๋ฅผ ์ํด ๋์ ํ์ด๋ s.lowercased()๋ฅผ ์ฌ์ฉํ์ฌ ๋ณ๊ฒฝํด์ฃผ์๋ค.
๋น๊ต ํจ์
func solution1(_ s:String) -> Bool
{
let s = s.lowercased()
return s.filter{ $0 == "p" }.count == s.filter{ $0 == "y" }.count
}
func solution2(_ s:String) -> Bool
{
let string = s.lowercased()
return string.components(separatedBy: "p").count == string.components(separatedBy: "y").count
}
var timeElapsed1: UInt64 = 0
var timeElapsed2: UInt64 = 0
for _ in 1...100 {
let start1 = DispatchTime.now()
print(solution1("pPooweljdslfnxocvhzethksrEFLKSJODIFJSEVBVNJ0UKKGLHNJIVJttyryertyguyqieuyuweyrutsrtyhoyY"))
let end1 = DispatchTime.now()
let start2 = DispatchTime.now()
print(solution2("pPooweljdslfnxocvhzethksrEFLKSJODIFJSEVBVNJ0UKKGLHNJIVJttyryertyguyqieuyuweyrutsrtyhoyY"))
let end2 = DispatchTime.now()
timeElapsed1 += ( end1.uptimeNanoseconds - start1.uptimeNanoseconds )
timeElapsed2 += ( end2.uptimeNanoseconds - start2.uptimeNanoseconds )
}
print("์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท \\(timeElapsed1/100)๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.")
print("๋๋ฒ์งธ ํจ์๋ ํ๊ท \\(timeElapsed2/100)๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.")
๊ฐ ํจ์๋ฅผ 100๋ฒ์ฉ ์คํํ์ฌ ํ๊ท ๋๋ ธ์ด๋ฅผ ๊ตฌํ๋ ํจ์๋ฅผ 10๋ฒ ์คํํ์๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 10839๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 12830๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 15849๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 16872๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 13044๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 15122๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 12982๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 15504๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 14243๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 16677๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 13116๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 15073๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 13371๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 16180๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 13268๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 15083๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 13050๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 15354๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
์ฒซ๋ฒ์งธ ํจ์๋ ํ๊ท 13218๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋๋ฒ์งธ ํจ์๋ ํ๊ท 15870๋๋
ธ์ด ๊ฑธ๋ ธ์ต๋๋ค.
๋์ ํ์ด๊ฐ ๋ฏธ์ธํ๊ฒ ๋ ๋น ๋ฅธ ๊ฒ์ ๋ณผ ์ ์๋ค.
๊ถ๊ธ์ฆ ํด๊ฒฐ!
๊ฒฐ๋ก ์ ๋ค์์๋ ๋ฌธ์์ด ๋น๊ต ๋ฌธ์ ๊ฐ ๋์ค๋ฉด filter๋ฅผ ์ด์ฉํด์ ํ ๊ฒ ๊ฐ๋ค!