Skip to content

[Algorithm] LongestPasswordย #154

@hwangJi-dev

Description

@hwangJi-dev

๐Ÿ’ฌย ๋ฌธ์ œ

https://app.codility.com/programmers/trainings/1/longest_password/


๐Ÿ’ฌย Idea

  • Swift4์—์„œ filter ๋‚ด์˜ Character์—์„œ isLetter, isNumber ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•ˆ๋˜๋Š” ๊ฒƒ ๊ฐ™๋‹ค.. ๊ทธ๋ž˜์„œ ์ •๊ทœํ‘œํ˜„์‹์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฌธ์ œ๋ฅผ ํ’€์ดํ–ˆ๋‹ค.
    1. ๋ฌธ์ž๊ฐ€ ์ง์ˆ˜๊ฐœ์ผ ๊ฒƒ ์กฐ๊ฑด์„ ๊ฒ€์‚ฌํ•ด์ฃผ๊ธฐ ์œ„ํ•ด ์ˆซ์ž์ธ ๋ฌธ์ž๋“ค์„ โ€œโ€์œผ๋กœ ์น˜ํ™˜ํ•ด์ฃผ์—ˆ๋‹ค. ์น˜ํ™˜ ํ›„์—๋Š” ๋ฌธ์ž๋งŒ ๋‚จ์œผ๋ฏ€๋กœ ํ•ด๋‹น ๊ฐœ์ˆ˜๋ฅผ ์„ธ์–ด ํŒ๋ณ„ํ–ˆ๋‹ค.

๐Ÿ’ฌย ํ’€์ด

public func solution(_ S : inout String) -> Int {
    let s = S.components(separatedBy: .whitespaces).filter({ $0.count % 2 == 1 })
    var longestSCount = -1
    
    for i in s {
        if checkIsValidString(i) {
            if longestSCount < i.count {
                longestSCount = i.count
            }
        }
    }
    
    return longestSCount
}

public func checkIsValidString(_ S: String) -> Bool {
    // 1. ์ˆซ์ž์™€ ์˜๋ฌธ์ž๋งŒ ํฌํ•จํ•  ๊ฒƒ
    let regexPattern = "^[0-9a-zA-Z]*$"
    guard let _ = S.range(of: regexPattern, options: .regularExpression) else { return false }
    
    // 2. ๋ฌธ์ž๊ฐ€ ์ง์ˆ˜๊ฐœ์ผ ๊ฒƒ
    if S.replacingOccurrences(of: "[0-9]", with: "", options: .regularExpression).count % 2 != 0 { return false }
    
    return true
}

ํ‰๊ฐ€ํ‘œ : https://app.codility.com/demo/results/trainingH74JG3-CYY/

Metadata

Metadata

Assignees

Labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions