[프로그래머스] 시저 암호 / C++
문제
문제를 보시려면 링크를 클릭해주세요.
풀이
풀이 1은 알파벳을 밀었을 때, z를 넘기는 경우와 그렇지 않은 경우를 나눠서 계산하였습니다.
풀이 2는 알파벳 개수가 26개임을 활용해 그 나머지 값으로 계산하여 z를 넘기는 것에 영향을 미치지 않게하였습니다.
소스 코드
풀이 1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
using namespace std;
string solution(string s, int n) {
for(int i=0; i<s.size(); i++){
if(s[i]>='A' && s[i]<='Z'){
s[i]+n > 'Z' ? s[i] += n -'Z'+'A'-1 : s[i] += n;
}
else if(s[i]>='a' && s[i]<='z'){
s[i]+n > 'z' ? s[i] += n -'z'+'a'-1 : s[i] += n;
}
}
return s;
}
풀이 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#include <string>
using namespace std;
string solution(string s, int n) {
for(int i=0; i<s.size(); i++){
if(s[i]>='A' && s[i]<='Z'){
s[i] = (s[i]+n-'A')%26 + 'A';
}
else if(s[i]>='a' && s[i]<='z'){
s[i] = (s[i]+n-'a')%26 + 'a';
}
}
return s;
}
This post is licensed under CC BY 4.0 by the author.
Comments powered by Disqus.