ALGORITHM

[?]프로그래머스_level3_시저암호

서울소시민 2017. 9. 9. 12:57

문제 :

알파벳을 n만큼 밀어서 기존 알파벳의 배열을 바꾸는 문제

예) 'a'를 3만큼 밀면 'd'로 바뀐다.


ascii코드를 생각하면 되는데 만약 200000번을 밀게된다면 엉뚱한 특수문자가 나올 수 있다.

그래서 '%'를 이용하여 알파벳의 총 갯수 26으로 나눈 나머지값으로 밀어준다.


값은 나오는데 정답이 안나온다



#include<iostream>
#include<string>
using namespace std;

string caesar(string s, int n)
{
	string answer = s;

  for(int i=0;i<s.size();i++){
  	if(s[i]=='z'){ 
      answer[i]='a'+(n-1)%26;
    }else if(answer[i] == ' '){
    	continue;
    }
    else{
      answer[i]=answer[i]+(n%26);
    }
    if(i==s.size()-1)
    	break;
  }
	return answer;
}

int main()
{
	string text = "a B z";
	int testNo = 4;

	string testAnswer = caesar(text, testNo);

	cout<<testAnswer;
}