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
'Algorithm Study > SW역량테스트' 카테고리의 다른 글
합병 정렬(merge sort) (0) | 2020.06.28 |
---|---|
큰 자릿수 뺄셈 (0) | 2020.06.28 |
(동적계획법) 연속 부분 최대합L (0) | 2020.04.30 |
너비 우선 탐색(BFS, Breadth-First Search) (0) | 2020.03.27 |
다익스트라 알고리즘(Dijkstra algorism) (0) | 2020.03.27 |
댓글