본문 바로가기
Data Structure & Algorithms/Arrays and Strings

[DSA] Array and String -Reverse String

by 담백로봇 2022. 10. 6.

제대로 코딩 공부좀 시작할려고 leetcode 결제를 감행하였다. 돈이 들어갔으니 열심히 해야한다. 막 방대한 자료를 다루지는않고 좀 더 기본적인걸 주로 다루는걸 GeeksforGeeks와 비교하여 더 최신 트랜드를 따라가는것같아 결정하였다. 오... 코딩 테스트가 이렇게 진행되는구나. 

 

Topic : Two pointers : 가장 기본적인 배치문제로 Array를 두 포인터로 위치를 옮겨가며 푸는방법이다. 

 

문제로 스트링을 역순하는문제가 나왔고 어찌저찌풀었는데 오... 내 프로그램이 전체 서밋한 프로그램중에 어느 위치에 차지하고있는지 가르쳐주기까지! 그 이후에 답지는 정말 친절하게 효율적인 코드를 알려준다!

와우~~~

 

내가 막무가내로 풀었던 제출답 (아니 굳이 소수 짝수 안나눠도 됬구나..)

class Solution {
public:
    void reverseString(vector<char>& s) {
        
        if (s.size()%2 ==1){ // odd
            for(int i=0 ; i < (s.size()-1)/2 ; i++){
                char temp_char = s[s.size()-1-i];
                s[s.size()-1-i] = s[i] ;
                s[i] =  temp_char  ;
            }
                
        }
        else{ // even
            for(int i=0 ; i < s.size()/2 ; i++){
                char temp_char = s[s.size()-1-i];
                s[s.size()-1-i] = s[i] ;
                s[i] =  temp_char  ;
            }
            
        }
    }
};

 

여기서 알려준 모범답안

class Solution {
    public void reverseString(char[] s) {
        int left = 0, right = s.length - 1;
        while (left < right) {
            char tmp = s[left];
            s[left++] = s[right];
            s[right--] = tmp;
        }
    }

내가쓴 방법은 Two point를 제대로 이용하지못했고 위의 방법이 라이브러리를 안쓰고 얻을수있는 최적화인듯. !

댓글