-
[프로그래머스/Level 1] 시저 암호 (C++)알고리즘 문제풀이/프로그래머스 2020. 10. 26. 17:18
programmers.co.kr/learn/courses/30/lessons/12926
풀이
아스키코드에 대칭되는 정수값을 이용하는 문제이다.
문자를 밀어낼 때, '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