Algorithm

λ°±μ€€ - 컡홀더(Swift)

CheonD 2022. 11. 4. 15:09

λ°±μ€€ - μ»΅ν™€λ”(Swift)

 

 

 λ¬Έμ œ μ„€λͺ…

 

https://www.acmicpc.net/problem/2810

 

2810번: 컡홀더

첫째 쀄에 μ’Œμ„μ˜ 수 N이 주어진닀. (1 ≤ N ≤ 50) λ‘˜μ§Έ μ€„μ—λŠ” μ’Œμ„μ˜ 정보가 주어진닀.

www.acmicpc.net

 

 λ‚˜μ˜ 풀이

 

μž…λ ₯쑰건이 μž‘μ•„μ„œ *을 κ·œμΉ™μ— 맞게 μ‚½μž…ν•œ λ’€ μŠ€νƒμ„ μ΄μš©ν•΄μ„œ μ—†μ•΄λ‹€.

 

import Foundation

let n = Int(readLine()!)!
var stack = [Character]()
var str = String(readLine()!)
str = str.replacingOccurrences(of: "S", with: "*S*")
str = str.replacingOccurrences(of: "LL", with: "*LL*")
str = str.replacingOccurrences(of: "**", with: "*")
var arr = str.map{$0}
var cnt = 0

for x in arr {
    if x == "*" { //컡홀더일 λ•Œ
        if !stack.isEmpty {
            stack.removeLast()
        } else {
            cnt += 1
        }
    } else { // μ‚¬λžŒμ΄ λ“€μ–΄μ˜¬ λ•Œ
        if cnt > 0 {
            cnt -= 1
        } else {
            stack.append(x)
        }
    }
}
print(n - stack.count)

 

λ‹€λ₯Έ μ‚¬λžŒμ˜ 풀이λ₯Ό λ³΄λ‹ˆ μ»΅ν™€λ”μ˜ μˆ˜κ°€ μ‚¬λžŒμ˜ μˆ˜λ³΄λ‹€ μž‘μ„λ•ŒλŠ” μ»΅ν™€λ”μ˜ κ°œμˆ˜κ°€ 닡인 것을 μ•Œμ•˜λ‹€. 

즉 μ»΅ν™€λ”λŠ” μ–΄λŠκ³³μ— μœ„μΉ˜ν•˜λ“  μ „λΆ€ λ‹€ μ‚¬μš©μ΄ λœλ‹€λŠ” λœ»μ΄λ‹€. 

ν•˜μ§€λ§Œ SSS처럼 컡홀더가 μ‚¬λžŒμˆ˜λ³΄λ‹€ λ§Žμ€ κ²½μš°λŠ” μ‚¬λžŒμ˜ μˆ˜κ°€ 컡홀더λ₯Ό μ‚¬μš©ν•˜λŠ” μˆ˜κ°€ λœλ‹€.

 

import Foundation

let n = Int(readLine()!)!
var stack = [Character]()
var str = String(readLine()!)
str = str.replacingOccurrences(of: "S", with: "*S*")
str = str.replacingOccurrences(of: "LL", with: "*LL*")
str = str.replacingOccurrences(of: "**", with: "*")
var arr = str.map{$0}
var cnt = 0

let cupCount = Array(str).filter{$0 == "*"}.count
if cupCount < n {
    print(cupCount)
} else {
    print(n)
}