[문풀] str.replacingOccurrences

Kiwi·2024년 4월 19일

Algorithm

목록 보기
17/17

⚙️ 숫자 문자열과 영단어

음 일단 보자마자 딕셔너리!! 한번 써봐야 겠다. 문제 풀면서 딕셔너리를 사용한 적이 한번도 없는것 같아 이번 기회에 써야겠다는 생각을 했다. 그래서 딕셔너리를 사용해서 어떻게 풀까하다 생각하고 코드를 적었다.

import Foundation

func solution(_ s:String) -> Int {
    let dic = ["one": 1, "two": 2, "three": 3, "four": 4,
                              "five": 5, "six": 6, "seven": 7, "eight": 8,
                              "nine": 9, "zero": 0]
    var result: [Int] = []
    var flag: String = ""
    for char in s {
        if let temp = Int(String(char)) {
            result.append(temp)
        } else {
            flag.append(char)
            if dic.keys.contains(flag) {
                result.append(dic[flag]!)
                flag = ""
            }
        }
    }
    let res = result.map { String($0) }.joined()
    return Int(res)!
}

이게 내가 제출한 정답 코드인데 사실 나는 문제를 풀때 플레이그라운드 파일에서 푼다! 실행한 결과를 줄바줄로 바로바로 볼수있기 때문! 근데 장점이라고 해야할지 단점이라고 해야할지 여기서 자동완성기능과 더불어 객체에 속한 프로퍼티랑 메서드를 볼 수 있다. ㅎㅎ 그래서 코드의 dic.keys.contains(flag) 이 부분도 사실 'Swift라면 딕셔너리에 이런 기능정도는 제공해주지 않을까~~'라는 생각으로 .찍고 찾은거다...ㅎㅎㅎㅎㅎㅎ

그리고 앱을 만들때는 강제언래핑이 컴파일 에러를 발생시킬 수 있어서 보통 옵셔널 바인딩으로 많이 처리하는데 이렇게 !를 자주 사용해도 되나 싶다.. 알고리즘 문제는 정해진 입력값이 있다보니 그걸 이용해서 그냥 믿고? 강제언래핑하는데 이걸 옵셔널바인딩으로 바꿔서 풀어야 하나?

다른사람들의 풀이를 보니 역시 기깔나는 string 객체 메서드가 있었다!

import Foundation

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)!
}

와웅...👏👏👏👏👏👏👏 arr의 인덱스와 숫자를 페어로 사용했다!! 그리고 replacingOccurrences를 사용해서 string -> Int할 때 인덱스를 사용함!



📝 str.replacingOccurrences(of: , with: )

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

문자열에서 특정 부분 문자열을 다른 문자열로 대체하는 메서드이다. 이 메서드는 대체할 문자열이 발생한 횟수에 상관없이 모든 발생을 대체한다고 한다.
developer.apple.com/documentation/foundation/nsstring




문제를 풀면서 느끼는게 사람이 자주쓰는것만 쓰는것 같다..(이게 바로 관성..?!?!)그래서 안쓰는 놈들을 정말 빨리 까먹음.. swift언어가 꽤 고급언어인지라 지원하는 기능이 정말정말 많은데 그걸 다 못 사용하고 있다는 생각이 든다. 이럴 땐 c언어로 코테를 보고 싶어진당 큽 학교에서 자료구조 강의 들을때만 해도 c랑 교수님을 엄청 미워했는데 이런 생각이 들다니...🙈🙉🙈🙉🙊🙊🙊 그냥 닥치고 해야겠당ㅎㅎ

profile
🐣 iOS Developer

1개의 댓글

comment-user-thumbnail
2024년 4월 19일

저도 닥치고 하겠습니다... 글을 보니 오늘도 열심히 알고리즘을 푸셨군요 고생 많으셨습니다! ㅎㅎㅎ 주말 잘 보내시고 다음주 월요일에 봬요!

답글 달기