*초기 작성 코드
더보기
#include <string>
#include <vector>
using namespace std;
string ChangeString(string Target)
{
for(int i = 0; i < Target.length(); i++)
{
if(i % 2 == 0)
{
if(Target[i] >= 'a' && Target[i] <= 'z')
{
char ch = Target[i] - 32;
Target.erase(i, 1);
Target.insert(i, 1, ch);
}
}
else
{
if(Target[i] >= 'A' && Target[i] <= 'Z')
{
char ch = Target[i] + 32;
Target.erase(i, 1);
Target.insert(i, 1, ch);
}
}
}
return Target;
}
string solution(string s)
{
int t = 0;
string Answer = "";
s += " ";
while(s.find(" ", t) != -1)
{
string Target = s.substr(t, s.find(" ", t) - t);
Answer += ChangeString(Target) + " ";
t = s.find(" ", t) + 1;
}
Answer.erase(Answer.length() - 1);
return Answer;
}
string::find 함수로 공백 문자 단위로 파싱하여 주어진 규칙에 맞게 문자열을 변환하는 함수를 거쳐 다시 solution함수에서 반환된 문자열을 합쳐주는 방식으로 작성하였다.
다른 사람의 문제 풀이를 보고 내 코드를 봤는데 가독성이 좋지 않고, 반복문을 2번 돌아야되기에 속도도 느린 것을 확인했다.
*다른 사람 풀이 참고해서 다시 작성한 코드
#include <string>
#include <vector>
using namespace std;
string solution(string s)
{
string Answer = "";
int t = 1;
for(int i = 0; i < s.length(); i++, t++)
{
if(s[i] ==' ')
{
Answer += " ";
t = 0;
}
else
{
//비트 And 연산자를 활용해서 홀수번째인지, 짝수번째인지 확인
//toupper함수와 tolower함수를 사용해서 대소문자 변환
t & 1 ? Answer += toupper(s[i]) : Answer += tolower(s[i]);
}
}
return Answer;
}
- 한 번의 반복문으로 주어진 규칙에 맞게 문자열을 변환할 수 있어서, 가독성이 좋아졌고 속도도 빨라졌다.
- 비트 And 연산자를 활용해서 해당 문자가 홀수번째인지 짝수번재인지 확인하는 것을 간결하게 작성하였다.
- toupper 함수와 tolower 함수의 존재를 처음 알았는데 쉽게 대소문자 변환이 가능하고 가독성도 좋아보인다.
https://dong-grae.tistory.com/74
비트 연산자
비트 And 연산자 / '&' 두 정수의 이진수 표현에서 같은 자리의 비트를 비교하여, 두 비트가 모두 1일 때만 '1'을 반환하고 나머지 경우에는 '0'을 반환하는 연산자이다.하드웨어 수준에서 작동하므
dong-grae.tistory.com
https://dong-grae.tistory.com/75
std::toupper / std::tolower
std::toupper / std::tolower toupper('a') = Atolower('Z') = zC++에서 char를 대문자와 소문자로 변환할 때 사용되는 함수이다. 헤더에 정의되어 있고, 단일 문자 변환에 유용하다.내부적으로 문자의 ASCII 값을
dong-grae.tistory.com
'공부 > Code Cata' 카테고리의 다른 글
최소 직사각형 구하기 (0) | 2024.12.31 |
---|---|
재귀호출로 배열의 합 검사하기 (0) | 2024.12.30 |
3진법 뒤집기 (1) | 2024.12.27 |
행렬의 덧셈(함수 내 배열 크기와 함께 초기화) (0) | 2024.12.26 |
Quick Sort (0) | 2024.12.23 |