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

[Swift Algorithm] ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ Programmers(Lv.2)

by seolhee2750 2021. 7. 8.
๋ฌธ์ œ ์„ค๋ช…

๊ด„ํ˜ธ๊ฐ€ ๋ฐ”๋ฅด๊ฒŒ ์ง์ง€์–ด์กŒ๋‹ค๋Š” ๊ฒƒ์€ '(' ๋ฌธ์ž๋กœ ์—ด๋ ธ์œผ๋ฉด ๋ฐ˜๋“œ์‹œ ์ง์ง€์–ด์„œ ')' ๋ฌธ์ž๋กœ ๋‹ซํ˜€์•ผ ํ•œ๋‹ค๋Š” ๋œป์ž…๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด

  • "()()" ๋˜๋Š” "(())()" ๋Š” ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค.
  • ")()(" ๋˜๋Š” "(()(" ๋Š” ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค.

'(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ง„ ๋ฌธ์ž์—ด s๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ๋ฌธ์ž์—ด s๊ฐ€ ์˜ฌ๋ฐ”๋ฅธ ๊ด„ํ˜ธ์ด๋ฉด true๋ฅผ return ํ•˜๊ณ , ์˜ฌ๋ฐ”๋ฅด์ง€ ์•Š์€ ๊ด„ํ˜ธ์ด๋ฉด false๋ฅผ return ํ•˜๋Š” solution ํ•จ์ˆ˜๋ฅผ ์™„์„ฑํ•ด ์ฃผ์„ธ์š”.

 

์ œํ•œ ์กฐ๊ฑด
  • ๋ฌธ์ž์—ด s์˜ ๊ธธ์ด : 100,000 ์ดํ•˜์˜ ์ž์—ฐ์ˆ˜
  • ๋ฌธ์ž์—ด s๋Š” '(' ๋˜๋Š” ')' ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ž…์ถœ๋ ฅ ์˜ˆ
s answer
"()()" true
"(())()" true
")()(" false
"(()(" false

 

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

        if sum < 0 {
            break
        }
    }

    return sum == 0 ? true : false
}
  • (๊ฐ€ ์˜ฌ ๋•Œ๋Š” +1์„ ํ•ด์ฃผ๊ณ , )๊ฐ€ ์˜ฌ ๋•Œ๋Š” -1์„ ํ•ด์ฃผ์—ˆ๋‹ค.
  • 0๋ณด๋‹ค ์ž‘์•„์ง€๋Š” ์ˆœ๊ฐ„ ๋ฐ”๋กœ for๋ฌธ์„ ๋ฒ—์–ด๋‚˜๋„๋ก ํ–ˆ๋‹ค.
  • ๋ฐ˜ํ™˜ํ•  ๋•Œ๋Š” (์™€ )์˜ ๊ฐœ์ˆ˜๊ฐ€ ๊ฐ™์œผ๋ฉด 0์ด ๋˜์–ด์•ผ ํ•˜๋ฏ€๋กœ, 0์ด๋ฉด true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ฒŒ ํ•ด์ฃผ์—ˆ๋‹ค.

 

๐Ÿ’ก ํ”ผ๋“œ๋ฐฑ
  • return ๋ฌธ์—์„œ ๊ตณ์ด ์‚ผํ•ญ์—ฐ์‚ฐ์ž๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•„๋„ sum == 0 ๋งŒ ์ž‘์„ฑํ•ด๋„ Bool ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ์•Œ๋ฉด์„œ๋„ ์ž๊พธ ์ €๋ ‡๊ฒŒ ์“ฐ๊ฒŒ ๋œ๋‹ค.; 

 


 

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

func solution(_ s:String) -> Bool {
    var sum = 0
    
    for i in s {
        if i == "(" { sum += 1 }
        else { sum -= 1 }
        if sum < 0 { return false }
    }

    return sum == 0
}
  • for๋ฌธ ์•ˆ์—์„œ sum์ด 0๋ณด๋‹ค ์ž‘์•„์ง€๋ฉด ๊ตณ์ด ํ•œ ๋ฒˆ๋” ๊ฒ€์‚ฌํ•  ํ•„์š” ์—†์ด ๋ฐ”๋กœ false return ํ•ด์ฃผ์—ˆ๋‹ค.
  • == ์—ฐ์‚ฐ์ž๋กœ Bool ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ์—ˆ๋‹ค.
  • ์ฒซ ํ’€์ด์™€ ๋กœ์ง์€ ๊ฐ™์ง€๋งŒ ํ›จ์”ฌ ๊น”๋”ํ•˜๊ฒŒ ์ž˜ ์ž‘์„ฑํ–ˆ๋‹ค.

 


 

๋ฌธ์ œ

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

๋Œ“๊ธ€