본문 바로가기
  • 소소한 개발자 이야기
Algorithm Study/SW역량테스트

문자열 뒤집기(고급)

by Siwan_Min 2020. 6. 22.
728x90

문제

입력된 문자열을 반대의 순서로 출력하세요. 

 

제약 조건

1. 최대 문자열 길이는 100자이다. 

 - 영문 대소문자 가능

 - 숫자 가능

 - 특수문자 가능

 

2. 입력값을 받은 배열을 제외하고는, 모든 형태의 변수의 선언 및 사용을 금지합니다. (매크로 상수도 사용금지)

3. 반복문(for, while, do while() 등)을 수행하면서, char 단위로 문자 단위로 출력하는 것도 금지합니다. 

4. strlen() 함수를 제외하고는, 어떠한 종류의 함수를 사용하는 것을 금지합니다. (C++의 경우 inline함수 금지)

 - 문자열 순서를 변경하는 reverse() 형태의 함수의 사용도 금지합니다. 

 - 단, 문자열 입력 받는 함수(예, scanf, cin 등)는 1회 사용 가능

 - 조건문, 반복문의 함수는 사용 가능 

5. 모든 에러의 경우에는 error 라고 결과를 출력한다. 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
//C++ Program to reverse a atring without using temp variable
 
#include <iostream>
#include <cstring>
 
using namespace std;
 
// Function to reverse string and return reversed string 
string reversingString(string str, int start, int end){
 
    //Iterate loop upto start not equal to end
    while(start < end)
    {
        // XOR for swapping the variable
        str[start] ^= str[end];
        str[end] ^= str[start];
        str[start] ^= str[end];
 
        ++start;
        --end;
    }
    return str;
}
 
 
int main(){
 
    char s[128="";
 
    scanf(" %[^\n]s",s); // the way to get a string including space without getline() 
 
    int len = strlen(s);
 
    if(len > 100 ) {
        cout<<"error"<<endl;
        }
    else cout<<reversingString(s, 0, len-1);
 
    return 0;
}

 

코딩 테스트에서 나왔던 문제를 복원해 보았습니다. 

코딩 테스트 중 인터넷 사용이 가능해서 검색을 해가며 풀었는데, 전 문제에서 시간을 너무 많이 쓰는 바람에 마음이 급해서 코드를 제대로 구현하지 못해 시간내에 풀지 못했네요ㅠㅠ...아쉬움이 많이 남는 문제..................

위의 코드도 100점짜리는 아닙니다. 아마 다른 예외처리를 해야 할 것 같다고 생각은 드는데 지금으로썬 딱히 생각이 안나네요....

728x90

댓글