๐Ÿง‘๐Ÿป‍๐Ÿ’ป Coding Test/โŒจ๏ธ Programmers

[ ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ] ๋ฌธ์ž์—ด ๋‚ด p์™€ y์˜ ๊ฐœ์ˆ˜

EarthSea 2024. 3. 18. 12:35

 

 

๐Ÿ„ ์ฝ”๋”ฉํ…Œ์ŠคํŠธ

์ฝ”๋”ฉํ…Œ์ŠคํŠธ ๋ฌธ์ œ ํ’€์ด

โœ๐Ÿป Github

๋ฌธ์ œ ํ’€์ด 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๋ฅผ ์ด์šฉํ•ด์„œ ํ’€ ๊ฒƒ ๊ฐ™๋‹ค!