풀이과정
이 문제는 간단해 보이지만, 생각해야 될 것이 하나 있다.
바로 char 자료형은 1byte 자료형이며 표현할 수 있는 최대 정수 범위는 127이라는 것이다.
만약 'z' = 122인데 n = 25를 더하면 값은 147이므로 char 자료형의 범위를 벗어나게 된다.
그러므로 대문자처럼 문자형에 바로 n을 더해주면 틀리게 되는 것이다.
해결 방법은 int형을 선언해줘서 연산 결과 값을 저장해주고,
만약 'z'를 넘어섰다면 26을 빼주는 방식으로 해결하면 된다.
#include <string>
#include <vector>
using namespace std;
string solution(string s, int n) {
string answer = "";
for(int i = 0; i < s.size(); i++){
if('A' <= s[i] && s[i] <= 'Z'){
s[i] += n;
if(s[i] > 'Z') s[i] -= 26;
}
else if('a' <= s[i] && s[i] <= 'z'){
int num = s[i] + n;
if(num > 'z') num -= 26;
s[i] = num;
}
}
answer = s;
return answer;
}
'🍞 Algorithm > Programmers' 카테고리의 다른 글
[프로그래머스][Level1] [1차] 다트 게임 c++ (0) | 2022.09.02 |
---|---|
[프로그래머스][Level1] 부족한 금액 계산하기 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 문자열 내림차순으로 배치하기 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 문자열 내 p와 y의 개수 c++ (0) | 2022.09.02 |
[프로그래머스][Level1] 두 정수 사이의 합 c++ (0) | 2022.09.02 |