[Swift] 프로그래머스 - 숫자 문자열과 영단어

sun02·2021년 11월 16일
0

알고리즘

목록 보기
19/52

문제 링크

매우 쉽게 풀 수 있는 문제인데 'replacingOccurences(of:with:)' 자체를 몰라서 너무 복잡하게 풀었다ㅠㅠ

replacingOccurence(of: with:)란?

func replacingOccurrences(of target: String, with replacement: String) -> String 로

target에는 교체할 대상, replacement 에는 교체할 값을 넣어
교체된 문자열이 반환되는 함수이다

예를 들어,

var test = "one4seveneight"
print(test.replacingOccurence(of:"one",with:"1")

과 같이 작성하면
14seveneight 이 출력된다.

따라서 위 함수를 사용하여 아래와 같이 풀 수 있다.

풀이 코드


import Foundation


func solution(_ s:String) -> Int {
    
    let numArray = ["zero","one","two","three","four","five","six","seven","eight","nine"]
    var resultArray = s
    
    for i in 0..<numArray.count {
        resultArray = resultArray.replacingOccurrences(of: numArray[i], with: "\(i)")
        print(resultArray)
    }
    
    return Int(resultArray)!
    
}

+ replacingOccurence 사용하지 않은 풀이


import Foundation

func solution(_ s:String) -> Int {
    
    var testArray = s
    var resultArray = ""
    var index : String.Index
    
    if !testArray.isEmpty {
        index = testArray.index(testArray.startIndex, offsetBy: 1)
    } else {
        index = testArray.startIndex
    }
   
    func removeElements(times: Int) {
        for _ in 0..<times {
            testArray.removeFirst()
        }
    }
    
    while !testArray.isEmpty {
        for char in testArray {
            
            if char == "z" {
                resultArray.append("0")
                removeElements(times: 4)
                break
            
            } else if char == "o" {
                resultArray.append("1")
                removeElements(times: 3)
                break
                
            } else if char == "t" {
                
                if testArray[index] == "w" {
                    resultArray.append("2")
                    removeElements(times: 3)

                } else {
                    resultArray.append("3")
                    removeElements(times: 5)
                }
                break
                
            } else if char == "f" {
                if testArray[index] == "o" {
                    resultArray.append("4")
                    removeElements(times: 4)
                } else {
                    resultArray.append("5")
                    removeElements(times: 4)
                }
                break
            } else if char == "s" {
                if testArray[index] == "i" {
                    resultArray.append("6")
                    removeElements(times: 3)
                } else {
                    resultArray.append("7")
                    removeElements(times: 5)
                }
                break
                
            } else if char  == "e" {
                resultArray.append("8")
                removeElements(times: 5)
                break
            } else if char == "n" {
                resultArray.append("9")
                removeElements(times: 4)
                break
            } else {
                resultArray.append(testArray.removeFirst())
            }
            
        }
    }
    
    return Int(resultArray)!
}

  • 이거도 통과는 됩니다..!

왠지 억울하다ㅠ

0개의 댓글