[회고] 신입 iOS 개발자가 되기까지 feat. 카카오 자세히보기

💻 CS/알고리즘 연습

[알고리즘 연습] 영어단어 복구 알고리즘 (by C++)

inu 2020. 3. 12. 14:29
반응형

영어단어 복구 알고리즘

  • 특정 단어를 대소문자 구문없이 중간중간 공백을 포함하여 한줄로 입력하면,
  • 그를 소문자의 이어진 문자로 복구해주는 알고리즘이다.
  • 예를 들어, 'bE au T I fu L'과 같이 입력하면 이를 'beautiful'로 바꾸어 출력해준다.

풀이

#include<stdio.h>

int main(){
    //freopen("input.txt", "rt", stdin);
    char a[101], b[101];
    int i, p=0;
    gets(a);
    for(i=0; a[i]!='\0'; i++){
        if(a[i]!=' '){
            if(a[i]>=65 && a[i]<=90){
                b[p++]=a[i]+32;
            }
            else b[p++]=a[i];
        }
    }
    b[p]='\0';
    printf("%s\n", b);    
    return 0;
}

- scanf가 아니라 gets로 입력을 받는다. 왜나하면 sanf는 공백이 있을 경우 거기까지만 입력을 받기 때문이다. gets는 개행이 되기 전까지의 입력 모두를 받을 수 있다.

- 어쨌든 문자열을 받았다면 그 끝에는 '\0'(종료문자)가 있을 것이므로 이를 만날 때까지 for문을 돌게하여 조건을 확인한다.

- 대문자의 아스키코드는 65(A)~90(Z)이다.

- 소문자의 아스키코드는 97(a)~122(z)이다.

- 공백이면 무시, 대문자일 경우 소문자로 바꿔서(아스키코드값 +32), b라는 새로운 문자열에 저장해준다.

- b의 마지막에 종료문자를 넣고 이를 출력한다.

반응형