안녕 세상아,

[프로그래머스/c++] Lv1 시저 암호 본문

프로그래머스

[프로그래머스/c++] Lv1 시저 암호

돈 많은 백수가 되고싶다 2024. 8. 29. 15:05

https://school.programmers.co.kr/learn/courses/30/lessons/12926

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

소문자일 때와 대문자일 때를 나눠서 생각하면 된다. 

너무..복잡하게 풀었나싶긴 하지만 생각나는건 이런 풀이 뿐..

 

신경써야할 것은 z에서 1 더했을 때 a로 만들어야 한다는 것이다. 아스키코드를 사용하면 소문자가 아닌 다른 문자가 나오게 되어서, 이부분만 잘 신경쓰면 간단하게 풀 수 있다. 

#include <string>
#include <vector>

using namespace std;

string solution(string s, int n) {
	string answer = "";

	for (int i = 0; i < s.size(); i++) {
		int x = 0;
		if (s[i] >= 'a' && s[i] <= 'z') {
			x = s[i];
			if (x + n > 122) {
				s[i] = s[i] + n - 26;
				answer += s[i];
			}
			else
				answer += s[i] + n;
		}
		else if (s[i] >= 'A' && s[i] <= 'Z') {
			x = s[i];
			if (x + n > 90) {
				s[i] = s[i] + n - 26;
				answer += s[i];
			}
			else
				answer += s[i] + n;
		}
		if (s[i] == ' ') {
			answer += s[i];
		}
	}

	return answer;
}