-
[프로그래머스/Level 1] 시저 암호 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 26. 17:18
programmers.co.kr/learn/courses/30/lessons/12926
코딩테스트 연습 - 시저 암호
어떤 문장의 각 알파벳을 일정한 거리만큼 밀어서 다른 알파벳으로 바꾸는 암호화 방식을 시저 암호라고 합니다. 예를 들어 AB는 1만큼 밀면 BC가 되고, 3만큼 밀면 DE가 됩니다. z는 1만큼 밀면 a가
programmers.co.kr
풀이
아스키코드에 대칭되는 정수값을 이용하는 문제이다.
문자를 밀어낼 때, 'Z'와 'z'의 값을 벗어나면 다시 'A', 'a'로 돌아가도록 처리를 해줘야하는데, (현재의 문자 + 미는 크기 - 26) 식을 통해 위의 처리를 해줄 수 있다.
ex) 'Y'의 경우 아스키 코드 값은 89, 4칸을 밀면 89+4=93이 되고, 이는 'Z'(90)의 범위를 넘어가므로, 여기서 26을 빼주면 93-26=67 즉 'C'가 된다.
전체 코드
#include <string> #include <vector> using namespace std; string solution(string s, int n) { for(int i=0;i<s.length();i++) { if(s[i]==' ') { continue; } else if(s[i]+n>'Z' && s[i]<='Z') { s[i]+=n-26; } else if(s[i]+n>'z' && s[i]>='a') { s[i]+=n-26; } else { s[i]+=n; } } return s; }
'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
[프로그래머스/Level 1] 최대 공약수와 최소 공배수 (C++) (0) 2020.10.27 [프로그래머스/Level 1] 키패드 누르기 (C++) (0) 2020.10.26 [프로그래머스/Level 1] 소수 찾기 (C++) (0) 2020.10.26 [프로그래머스/Level 1] 문자열 내 마음대로 정렬하기 (C++) (0) 2020.10.24 [프로그래머스/Level 1] 크레인 인형 뽑기 (C++) (0) 2020.10.24