인프런 커뮤니티 질문&답변

정Logan님의 프로필 이미지
정Logan

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

1-F

큰돌님 아래와같이 코드를 제가 작성했는데 숫자만 출력이 안되네요.

작성

·

168

0

  • #include<bits/stdc++.h>
    using namespace std;

    string s;
    int main(){
    getline(cin,s);
    for( int i = 0 ; i < 101; i++){

    if (s[i] >= 65 && s[i] <= 90){
    int idx = (s[i] - 'A' + 13) % 26 ;
    s[i] = idx + 'A';
    }

    if (s[i] >= 97 && s[i] <= 122){
    int idx = (s[i] - 'a' + 13) % 26 ;
    s[i] = idx + 'a';
    }
    cout << s[i];
    }

    return 0;
    }

답변 2

0

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. 정Logan님. 

음 혹시 101이여야 하는 이유가 있나요?

for( int i = 0 ; i < 101; i++){

지금 이 문제는 "부여받은 문자열" 중에서 13을 더하는 로직이 메인인데 예를 들어 문자열의 길이가 3이라면 101이면 "범위를 넘어가는 참조"가 발생되겠죠?

 

감사합니다. 

강사 큰돌 올림.

0

정Logan님의 프로필 이미지
정Logan
질문자

차이는 범위에서 101로 했을 때랑 size()로 했을때 인 것 같은데... 이유를 모르겠네요 분명 101이 size()보다 크거든요?

 

정Logan님의 프로필 이미지
정Logan

작성한 질문수

질문하기