๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
3๏ธโƒฃ Swift/Problem Solving

[Swift Algorithm] ๋ฌธ์ž์—ด ๋‚ด p์™€ y์˜ ๊ฐœ์ˆ˜ Programmers(Lv.1)

by seolhee2750 2021. 6. 17.
๋ฌธ์ œ ์„ค๋ช…

๋Œ€๋ฌธ์ž์™€ ์†Œ๋ฌธ์ž๊ฐ€ ์„ž์—ฌ์žˆ๋Š” ๋ฌธ์ž์—ด 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

 

๋‚ด ๋ฌธ์ œ ํ’€์ด
func solution(_ s:String) -> Bool
{
    var countP = 0
    var countY = 0
    
    for i in s.lowercased() {
        if i == "p" {
            countP += 1
        }
        else if i == "y" {
            countY += 1
        }
    }

    return countP == countY
}
  • ๋จผ์ € ์ฃผ์–ด์ง„ ๋ฌธ์ž์—ด s๋ฅผ ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝํ•ด์ฃผ๊ณ , p๋‚˜ y๊ฐ€ ์กด์žฌํ•˜๋Š”์ง€ ๋ฐ˜๋ณต๋ฌธ์œผ๋กœ ํ™•์ธํ–ˆ๋‹ค.
  • return ๋ฌธ์—์„œ๋Š” ==๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ”๋กœ Bool ๊ฐ’์œผ๋กœ ๋ฆฌํ„ด๋˜๋„๋ก ํ•ด์ฃผ์—ˆ๋‹ค.

 

์ธ์ƒ์ ์ธ ํ’€์ด
import Foundation

func solution(_ s:String) -> Bool {
    let string = s.lowercased()
    return string.components(separatedBy: "p").count == string.components(separatedBy: "y").count
}
  • components๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ p๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ ๋ฐฐ์—ด์˜ ์š”์†Œ ๊ฐœ์ˆ˜, y๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋‚˜๋ˆˆ ๋ฐฐ์—ด์˜ ์š”์†Œ ๊ฐœ์ˆ˜๋ฅผ ๋น„๊ตํ–ˆ๋‹ค.

 

์ธ์ƒ์ ์ธ ํ’€์ด ํ•˜๋‚˜ ๋”,!
import Foundation

func solution(_ s:String) -> Bool {
    return s.lowercased().filter { $0 == "p" }.count == s.lowercased().filter { $0 == "y" }.count
}
  • ๋ชจ๋‘ ์†Œ๋ฌธ์ž๋กœ ๋ณ€๊ฒฝ ํ›„, filter ์‚ฌ์šฉํ•˜์—ฌ p์™€ y์˜ ๊ฐœ์ˆ˜ ํ™•์ธํ•˜๊ณ  ๋น„๊ตํ•ด์ฃผ์—ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • ๋‚˜๋„ ๋‚˜๋ฆ„ ์ž˜ ํ’€์—ˆ๋‹ค๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ๊ฐ™์€ ๋กœ์ง์ธ๋ฐ๋„ filter๋ฅผ ์‚ฌ์šฉํ•˜๋‹ˆ ํ›จ์”ฌ ๊ฐ„๊ฒฐํ•ด์กŒ๋‹ค,,!
  • components๋ฅผ ์ด๋Ÿฐ ๋ฌธ์ œ์—๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ์‹ ๊ธฐํ•˜๋‹ค. ํ•จ์ˆ˜ ์‚ฌ์šฉ์— ์ •๋‹ต์€ ์—†๋‹ค,, ๋‹ค์–‘ํ•˜๊ฒŒ ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๊ฒŒ ์—ฐ์Šต ๋งŽ์ด ํ•ด์•ผ๊ฒ ๋‹ค.

 


 

๐Ÿ– [ ์ถ”๊ฐ€ ] 1์ฃผ์ผ ํ›„ ๋‹ค์‹œ ํ’€์–ด๋ณด๊ธฐ

func solution(_ s:String) -> Bool
{
    var pCount = 0
    var yCount = 0
    
    for i in s {
        if Array("pP").contains(i) {
            pCount += 1
        }
        else if Array("yY").contains(i) {
            yCount += 1
        }
    }
    
    return pCount == yCount
}
  • if ๋ฌธ์—์„œ ๋ฐ”๋กœ ๋ฐฐ์—ด pP, yY๋ฅผ ๋งŒ๋“ค๊ณ , contains๋ฅผ ์‚ฌ์šฉํ•ด ๋ฌธ์ž์—ด์„ ๊ฒ€์‚ฌํ–ˆ๋‹ค.
  • ํšจ์œจ์ ์ธ ๋ฐฉ๋ฒ•์€ ์•„๋‹Œ๋“ฏ ํ•˜๋‹ค.ใ…œ ์œ„์˜ ์ฝ”๋“œ๋“ค ๋ณด๋ฉด์„œ ๋ณต์Šต ๋งŽ์ด ํ•ด์•ผ๊ฒ ๋‹ค.

 


 

๋ฌธ์ œ

https://programmers.co.kr/learn/courses/30/lessons/12916

๋Œ“๊ธ€