문제설명
A-Z, a-z 알파벳을 n만큼 밀어서 만드는 시저 암호가 있다!
input s를 암호처럼 n만큼 밀었을 때 만들어진 암호문 result를 return해라!
(입출력 예시)
s | n | result |
"AB" | 1 | "BC" |
"z" | 1 | "a" |
"a B z" | 4 | "e F d" |
제한 조건
- 공백은 아무리 밀어도 공백입니다.
- s는 알파벳 소문자, 대문자, 공백으로만 이루어져 있습니다.
- s의 길이는 8000이하입니다.
- n은 1 이상, 25이하인 자연수입니다.
풀이
아스키 코드로 알파벳 부분에서 n만큼 밀어주면서 만약에 Z에 도달했다면 다시 A로 돌아오게 아이디어 설정
돌아오는 아이디어는 원형큐랑 같은 방식으로 생각!
● 실수 : 조건식을 65<= ch <= 91로 해서 무조건 True가 나오는 문제...
● 느낀점 : 군복무 2년이 정말 많이 느껴지는 시간이었다... 다른 분들 풀이도 볼 수 있는게 프로그래머스에 장점인 것 같다.
소스 코드
#include <string>
#include <vector>
using namespace std;
string solution(string s, int n) {
string answer = "";
for(char ch : s){
if(ch == ' '){
answer += ' ';
continue;
}
int tmp = 0;
if (65 <= ch && ch <= 91){
tmp = 65 + (ch-65 + n)%26;
}
else if(97 <= ch && ch <= 123){
tmp = 97 + (ch-97+n)%26;
}
answer += tmp;
}
return answer;
}
'알고리즘' 카테고리의 다른 글
백준(1644) - 소수의 연속합 (0) | 2022.12.12 |
---|---|
프로그래머스 - 신고 결과 받기 (0) | 2022.12.07 |
프로그래머스 부대복귀 (0) | 2022.12.06 |
[Python] 백준 10989 - 수 정렬하기 3 (0) | 2022.10.10 |
[Python] 백준 1920번 수 찾기 (0) | 2022.10.10 |