Leetcode) Reverse String

Duna·2021년 8월 17일
0
post-thumbnail

Top Interview Questions
Easy Collection

Link of Problem

LEVEL : 🌕 🌑 🌑 🌑 🌑 (최하)


Easy Collection String의 첫번째 문제인 Reverse String를 풀어봤습니다.
벌써 Array가 끝났네요.

Reverse String문제는 매우 쉬웠습니다. 말 그대로 String를 Reverse시키는 겁니다.

제가 첫번째로 풀었던 코드는 고작 한 줄 밖에 되지않아요..

그럼 Reverse String를 코드와 함께 풀어보겠습니다.

1️⃣ 번째 방법

아마 알고리즘을 해보신 분들이라면 제목을 보자마자 "이걸 써야겠다" 싶을 거예요.
제목 그대로 Reverse를 쓰는 겁니다.

func reverseString(_ s: inout [Character]) {
    s.reverse()
}

끝났습니다. 이게 다입니다.
reverse()라는 함수는 주어진 배열을 완전 반대로 알아서 뒤집어 줍니다.

Runtime은 적당히 나온 거 같아요.

2️⃣ 번째 방법

2번째 방식은 가장 Runtime이 빨랐던 코드를 가져왔습니다.

배열의 대칭되는 부분에 있는 숫자들을 바꿔주는 코드였어요.
어차피 대칭되는 위치에 있는 숫자들을 사용할 생각이어서 middle를 놓았습니다. for문으로 전체 숫자를 보지 않아도 되기 때문에 middle를 두는 편이 더 효과적입니다.

그리고 temp를 둬서 두 숫자의 위치를 바꿔줬습니다.
전형적인 swap 로직이었어요.

func reverseString(_ s: inout [Character]) {
    let middle = Int(s.count / 2)
    for index in 0..<middle {
        let temp = s[index]
        s[index] = s[s.count - index - 1]
        s[s.count - index - 1] = temp
    }
}

분명히 더 빠른 코드였는데, 제가 돌리니깐 1번 방식보다 느리게 나왔습니다.
Leetcode가 돌리면서 계속 차이가 있는 거 같아요..!

profile
더 멋진 iOS 개발자를 향해

0개의 댓글