반응형
영어단어 복구 알고리즘
- 특정 단어를 대소문자 구문없이 중간중간 공백을 포함하여 한줄로 입력하면,
- 그를 소문자의 이어진 문자로 복구해주는 알고리즘이다.
- 예를 들어, '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의 마지막에 종료문자를 넣고 이를 출력한다.
반응형
'💻 CS > 알고리즘 연습' 카테고리의 다른 글
[알고리즘 연습] 뒤집은 숫자의 소수 여부 판단 (by C++) (0) | 2020.03.13 |
---|---|
[알고리즘 연습] 가장 많이 사용된 자릿수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 숫자의 총 개수 (by C++) (0) | 2020.03.13 |
[알고리즘 연습] 자릿수의 합 비교하기 (by C++) (0) | 2020.03.12 |
[알고리즘 연습] N까지의 약수 갯수 모두 구하기 (by C++) (0) | 2020.03.12 |