티스토리 뷰

728x90

https://school.programmers.co.kr/learn/courses/30/lessons/120894

 

문제 사진

내 풀이

import Foundation

// 1
var dic = ["zero" : "0",
           "one": "1",
           "two": "2",
           "three": "3",
           "four": "4",
           "five": "5",
           "six": "6",
           "seven": "7",
           "eight": "8",
           "nine": "9"]


func solution(_ numbers:String) -> Int {
    // 2
    var result = numbers
    
    // 3
    for (key, value) in dic {
        result = String(result.replacingOccurrences(of: key,
                                                    with: value))
    }
    return Int(result)!
}

solution("onefourzerosixseven")

1. 파라미터로 들어오는 numbers를 분별하기 위해, 각각 key: 영어, value: 숫자 로 만들어준다.

2. 파라미터상수이니 result라는 변수에 할당 (값을 바꾸기 위해)

3. replacingOccurrences(of:with:) 메서드로 반복문을 이용해 result의 처음부터 key값과 일치하는 영어를 -> value 숫자로 바꿔준다.

다른사람의 풀이

func solution(_ numbers:String) -> Int64 {
    let alphabet = ["zero":0, "one":1, "two":2, "three":3, "four":4, "five":5, "six":6, "seven":7, "eight":8, "nine":9]
    var result = ""
    var number = ""
    for n in numbers {
        // 1
        number += String(n)
        
        // 2
        if alphabet.keys.contains(number) {
            result += String(alphabet[number]!)
            number = ""
        }
    }
    return Int64(result)!
}
  1. number 라는 빈 문자열(String)을 갖는 변수에 numbers의 문자 하나하나 넣으면서
  2. (딕셔너리 타입) alphabet의 key에 포함되는게 있으면
    해당 key의 value를 result에 할당 후
    number 초기화

    

배운것

replacingOccurrences(of:with:) 

of의 문자열을 with 문자열로 변환하여 String 타입을 반환 .

 

 

예제

let str = "peppoop"
let replacedStr = str.replacingOccurrences(of: "op", with: "")
print(replacedStr)
// peppo

let str2 = "pingping"
let replacedStr2 = str2.replacingOccurrences(of: "i", with: "o")
print(replacedStr2)
// pongpong

 

728x90