문제
풀이
#include <string>
#include <vector>
#include <cctype>
using namespace std;
string solution(string s, int n) {
string answer = "";
for(auto &a : s){
if(islower(a)){
a+=n%26;
if(!islower(a))
a-=26;
}
else if(isupper(a)){
a+=n%26;
if(!isupper(a))
a-=26;
}
}
return s;
}
만약 'z'인 상태에서 숫자 n을 더하게 되면, 그 문자는 더 이상 소문자가 아니게 되어버리기 때문에
islower을 사용해 소문자인지 아닌지 구별한 후, 아니라면(z 이상의 숫자가 되어버린다면)
-26을 해 주어 z> a> b> c> d... 순서로 바뀌게끔 해주었다.
대문자도 마찬가지!
'Algorithm > Programers - C++' 카테고리의 다른 글
[프로그래머스]자릿수 더하기 / to_string (0) | 2022.02.21 |
---|---|
[프로그래머스]이상한 문자 만들기 (0) | 2022.02.21 |
[프로그래머스] 문자열을 정수로 바꾸기 / stoi (0) | 2022.02.20 |
[프로그래머스] 약수의 합 (0) | 2022.02.17 |
[프로그래머스]소수 찾기 / 에라토스테네스의 체 알고리즘 (0) | 2022.02.17 |