[프로그래머스/C++] ㅡ LV1 - 시저암호
2021. 3. 27. 14:58ㆍ필요/코딩테스트(프로그래머스)
문제
programmers.co.kr/learn/courses/30/lessons/12926
풀이
#include <string>
#include <vector>
using namespace std;
string solution(string s, int n) {
string answer = "";
for (int i=0; i<s.size(); i++) {
if (s[i] == ' ') { // 공백인 경우
answer+=s[i];
}
else {
if (s[i] < 'a') { // 대문자인 경우
if (s[i]+n > 'Z') {
answer+=s[i]+n-26;
}
else {
answer+=s[i]+n;
}
}
else { // 소문자인 경우
if (s[i]+n > 'z') {
answer+=s[i]+n-26;
}
else {
answer+=s[i]+n;
}
}
}
}
return answer;
}
개념
문자는 "이 아니라 '를 사용해서 나타낸다. 이를 "(문자열)로 사용하면 에러가 발생한다.
문제에서는 따로 언급이 없지만, 시저암호에서 소문자와 마찬가지로 대문자도 Z->A 이다.
풀이
3가지를 구분해줘야한다.
1. 공백인 경우
2. 소문자인 경우
3. 대문자인 경우
1, 2, 3을 하나의 if문으로 각각의 상황을 나눈다.
2와 3에서 s[i]+n이 Z 또는 z를 넘는지를 한번 더 나눠서 문제를 해결한다.
'필요 > 코딩테스트(프로그래머스)' 카테고리의 다른 글
[프로그래머스/C++] ㅡ LV1 - 정수 내림차순으로 배치하기 (0) | 2021.03.27 |
---|---|
[프로그래머스/C++] ㅡ LV1 - 이상한 문자 만들기 (0) | 2021.03.27 |
[프로그래머스/C++] ㅡ LV1 - 수박수박수박수박수박수? (0) | 2021.03.24 |
[프로그래머스/C++] ㅡ LV1 - 서울에서 김서방 찾기 (0) | 2021.03.19 |
[프로그래머스/C++] ㅡ LV1 - 문자열 다루기 기본 (0) | 2021.03.19 |