티스토리 뷰

문제 설명

네오와 프로도가 숫자놀이를 하고 있습니다. 네오가 프로도에게 숫자를 건넬 때 일부 자릿수를 영단어로 바꾼 카드를 건네주면 프로도는 원래 숫자를 찾는 게임입니다.

다음은 숫자의 일부 자릿수를 영단어로 바꾸는 예시입니다.

1478 → "one4seveneight"
234567 → "23four5six7"
10203 → "1zerotwozero3"
이렇게 숫자의 일부 자릿수가 영단어로 바뀌어졌거나, 혹은 바뀌지 않고 그대로인 문자열 s가 매개변수로 주어집니다. s가 의미하는 원래 숫자를 return 하도록 solution 함수를 완성해주세요.

제한 조건

내 답안

func solution(_ s:String) -> Int {
    
   let num: [String: String] = [
        "zero": "0",
        "one": "1",
        "two": "2",
        "three": "3",
        "four": "4",
        "five": "5",
        "six": "6",
        "seven": "7",
        "eight": "8",
        "nine": "9"
    ]
    
    var result = ""
    var word = ""
    
    for i in s {
        if i.isNumber {
            result.append(i)
        } else {
            word.append(i)
            
            if num[word] != nil {
                result.append(num[word]!)
                word = ""
            }
        }
    }
    
    return Int(result)!
}

접근 방법

  • ["zero":"0" ] 으로 구성된 딕셔너리를 만든 점!

다른 풀이

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

알게 된 것

  • replacingOccurrences : String 함수, 문자열을 다른 문자열로 변경할 때 사용
func replacingOccurrences(of target: String, with replacement: String) -> String
// target : 바꾸려는 문자열 (이것을)
// replacement : 바꿀려는 문자열 (이것으로 바꿈)

let originalString = "Hello World"
let replacedString = originalString.replacingOccurrences(of: " ", with: "-")
print(replacedString) // 출력: "Hello-World"
  • string 도 array처럼 쓸 수 있는 부분이 있다는 것 -> for 문, append 사용 가능

 

 

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

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

최근에 올라온 글