영어가 싫어요
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
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
}
'iOS 앱 개발자 프로젝트 > 알고리즘 코드카타' 카테고리의 다른 글
[Algorithm] 문자열 다루기 (w/ Swift) (2) | 2024.10.07 |
---|---|
[Algorithm] 길이에 따른 연산 (w/ Swift) (5) | 2024.09.15 |
[Algorithm] 배열 회전시키기(w/ Swift) (0) | 2024.09.06 |
[Algorithm] 옷가게 할인 받기 (0) | 2024.08.30 |
[Algorithm] OX 문제 (0) | 2024.05.06 |