• Jan
  • Feb
  • Mar
  • Apr
  • May
  • Jun
  • Jul
  • Aug
  • Sep
  • Oct
  • Nov
  • Dec
  • Sun
  • Mon
  • Tue
  • Wed
  • Thu
  • Fri
  • Sat
  • 27
  • 28
  • 29
  • 30
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

#12926 시저 암호

image

문제 정리

s를 n만큼 민 암호문 리턴
(공백은 안 밀림)

순서는 A~Z, Z는 밀면 A가 됨

생각해보기

아스키 코드 쓰는거겠지? 대문자, 소문자, 공백을 먼저 구분 후에
대문자면 A로 나눈 나머지에 따라 계산하면 될 것 같고..
소문자면 a로 나눈 나머지에 따라

코드 쓰기

내 풀이

#include <string>
#include <vector>
#include <iostream>

using namespace std;

string solution(string s, int n) {
    string answer = "";
    
    for(int i=0; i<s.size(); i++){
        int num = s[i] + n;
        if( 65 <= s[i] && s[i] <= 90){
            // 대문자
            if(num > 90){
                num -= 26;
            }
            answer += num;
        } else if ( 97 <= s[i] && s[i] <= 122) {
            // 소문자
            if(num > 122){
                num -= 26;
            }
            answer += num;
        } else {
            // 공백
            answer += ' ';
        }
    }
    
    return answer;
}

풀고 나서 알게된 것

string에 int 더하면 알아서 char로 인식하네..~

islower(a) isupper(a) 로 대문자인지 소문자인지 알 수 있다..헐.,,