[TIL] 0312 알고리즘

한철희·2024년 3월 12일
1

TIL

목록 보기
9/57


진수변환보자마자 머리가 아팠다.
하지만 swif는 비교적 늦게 나온 언어인만큼 아주 멋진 메서드가 있을거라 기대하고 서치해봤다
아니나 다를까 ㅋㅋㅋ 찾아냈다!
애플 공식문서

링크도 같이 달아둘테니 한번씩 보면 좋을 듯 합니다
참고한블로그
이 블로그로 처음에 발견해서 큰 도움이 되었습니다

3진법 변환이랑 10진법 변환 함수를 2개 짜야하나 고민했는데
좋은 방법을 찾아서 삘쏘굿~

func solution(_ n:Int) -> Int {
    var result = String(n,radix: 3)
    return Int(String(result.reversed()),radix: 3)!
}

이게 내가 풀이한 방법이다.
원래 result2라는 변수에 문자열 reversed()값을 할당했는데
그냥 바로 파라미터로 넘겨줘도 될거같아서 반환문에 같이 작성했다.
다시 보니 조금 지저분 한것 같기도..?

풀이의 기본적인 진행은
1. 주어진 숫자 3진법으로 변환하여 문자열로
2. 문자열 거꾸로 정렬하기
3. 2를 받아서 다시 10진법으로 변환하고 Int로 형변환하여 반환

새로운 유용한 고차함수를 배운거같다
이 방법이 아니었으면 코드가 상당히 길어졌을거같다.


아 이것도 제법 복잡해 보이는 문제다
일단 생각을 정리해보면
1. 문자열을 공백 기준으로 단어들을 나눈다.
2. 단어들의 짝/홀수 인덱스를 이용하여 대소문자를 변경한다.
3. 대소문자가 변경된 단어들을 하나의 문자열로 다시 합쳐 반환

요렇게 풀이가 진행될것같다.

func solution(_ s:String) -> String {
    let str = s.split(separator: " ")
    var result = ""
    
    for word in str {
        var transformedWord = ""
        for (index, char) in word.enumerated() {
            if index % 2 == 0 {
                transformedWord.append(char.uppercased())
            } else {
                transformedWord.append(char.lowercased())
            }
        }
        result += transformedWord + " "
    }
    return String(result.dropLast())
}

1차로 풀어본 코드다.
근데 제출하니 실패가 뜬다
음.. 뭐가 문제인가 싶어서 계속 고민하다가
다른 사람의 풀이를 참조했다.

func solution(_ s:String) -> String {
    var arr = s.components(separatedBy: " ")

    for i in 0..<arr.count {
        var temp = ""
        for (j, char) in arr[i].enumerated() {
            if j % 2 == 0 {
                temp += char.uppercased()
            }
            else {
                temp += char.lowercased()
            }
        }
        arr[i] = temp
    }

    return arr.joined(separator: " ")
}

이 문제는 후에 다시 풀어봐야할것같다.


몸이 컨디션이 안좋기도 했지만
문제들의 난이도가 올라감에 따라서 풀이 속도가 현저히 떨어졌다
그래도 앞으로 2~3문제 정도는 꾸준히 풀려고한다

profile
초보 개발자 살아남기

4개의 댓글

comment-user-thumbnail
2024년 3월 12일

컨디션이 안좋으신데도 꼼꼼하게 작성하셨네요 응원합니다!

1개의 답글
comment-user-thumbnail
2024년 3월 12일

애플에서 개발자용 공식문서로 정리해서 올려주는 건 첨 알았네요 ! 푹 쉬시고 내일은 좋은 컨디션으로 봬요🥹

1개의 답글