반응형

 

문자열 뒤집기

- 문자열의 n번째 순서와 마지막에서 n번째 순서의 위치를 변경해준다. (n의 값은 동일)

- 단순하게 생각하면 문자열의 길이만큼의 loop를 돌면서 위치를 변경해줘도 되지만, 위와 같은 swap 방식을 사용하면 문자열 길이의 반만 돌아도 뒤집기가 가능하기 때문에 훨씬 효율적이다.

#include <iostream>
using namespace std;

void Swap(char* c1, char* c2)
{
    char tmp = *c2;
    *c2 = *c1;
    *c1 = tmp;
}

void main()
{
    string str = "string";
    for(int i = 0; i < str.length() / 2; i++)
    {
    	Swap(&str[i], &str[str.length() - i - 1]);
    }
    cout << str << endl;
    
    //결과 : gnirts
}

 

 

 

 

숫자 뒤집기

- 숫자를 뒤집는 방법은 단순하게 2가지로 분류해볼 수 있다.

  • 숫자를 문자열로 변경해 문자열을 뒤집은 후 문자열을 숫자로 변환.
  • 수식을 사용해 뒤집기.

- 수식을 사용해서 숫자를 뒤집는 방법은 다음과 같다.

  1. 뒤집을 숫자를 10으로 나눠 나머지를 구한다.

  2. 나머지를 임시 변수에 더한다.

  3. 뒤집을 숫자를 10으로 나눠준다.

  4. 10으로 나눠진 뒤집을 숫자가 0이면 반복문을 빠져나간다.

  5. 10으로 나눠진뒤집을 숫자가 0이 아니면 임시 변수에 10을 곱해준다.

- 위의 과정에서 반복문을 빠져나오면 임시변수의 값이 뒤집을 숫자가 뒤집어진 값이 완성된다.

#include <iostream>
using namespace std;

void main()
{
    int n = 100;
    int reverse = 0;
    while(true)
    {
    	reverse += n % 10;
        n /= 10;
        if(n == 0)
        {
            break;
        }
        reverse *= 10;
    }
    cout << reverse << endl;
    
    //결과 : 1
}
반응형

'Stack > Algorithm' 카테고리의 다른 글

[유니티 C#] 퀵 정렬(Quick sort) 구현  (0) 2022.10.06
퀵정렬(Quick Sort) 구현  (0) 2021.09.19
삽입정렬(Insertion Sort) 구현  (0) 2021.09.18
선택정렬(Selection Sort) 구현  (0) 2021.09.15
버블정렬(Bubble Sort) 구현  (0) 2021.09.14

+ Recent posts