본문 바로가기

iOS 앱 개발자 프로젝트/알고리즘 코드카타

[Algorithm] 영어가 싫어요 (w/ Swift)

 

영어가 싫어요
 

프로그래머스

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

programmers.co.kr

 

 

이 문제는 문자열로 주어진 영어 숫자들을 실제 숫자로 바꿔서 하나의 정수로 만드는 거야.

예를 들어 "onetwothree"가 들어오면 이걸 123으로 바꿔주는 거지. (ˇ⊖ˇ)

 


 

1. 숫자 단어와 실제 숫자 연결하기

 

먼저, 영어 숫자 단어들(예: "one", "two", "three")을 실제 숫자(예: 1, 2, 3)로 바꿀 수 있어야 해. 그래서 나는 이 단어들을 숫자와 연결해주는 딕셔너리를 만들었어.

 

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

 

이렇게 하면, "one"을 1, "two"를 2로 쉽게 바꿀 수 있지!

 

2. 주어진 문자열에서 영어 단어를 숫자로 바꾸기

 

이제 주어진 문자열에서 영어 숫자 단어들을 찾아서 딕셔너리를 참고해 숫자로 바꿔야 해. 이를 위해 replacingOccurrences(of:with:)라는 함수를 사용했어. 이 함수는 문자열 안에 있는 특정 단어를 다른 단어로 바꿔줘.

 

예를 들어,

"onetwothree"라는 문자열이 있다면 "one"을 찾아서 1로 바꾸고, "two"는 2, "three"는 3으로 바꿔주는 거야.

코드에서는 아래와 같이 썼어.

 

var result = numbers
for (word, digit) in numberMap {
    result = result.replacingOccurrences(of: word, with: digit)
}

 

이 과정에서 주어진 문자열이 "onetwo"라면, 차례대로 "12"로 바뀌게 돼.

 

3. 변환된 문자열을 정수로 바꾸기

 

영어 단어들을 모두 숫자로 바꾼 뒤에는, 그 문자열을 정수로 변환해야 해.

그래서 나는 Int()를 사용했어. 이 함수는 문자열을 정수로 변환해줘. 만약 변환에 실패할 경우 0을 반환하도록 했어.

 

return Int(result) ?? 0

 

 


 

 

최종 코드

전체 코드는 아래와 같이 제출했어. 

 

func solution(_ numbers: String) -> Int {
    let numberMap: [String: String] = [
        "zero": "0", "one": "1", "two": "2", "three": "3", "four": "4",
        "five": "5", "six": "6", "seven": "7", "eight": "8", "nine": "9"
    ]
    
    var result = numbers
    for (word, digit) in numberMap {
        result = result.replacingOccurrences(of: word, with: digit)
    }
    
    return Int(result) ?? 0
}