Programming Language/C C++
[알고리즘 문제풀이] 7. 영어단어 복구★
9루트
2022. 1. 5. 16:37
내 방식을 포함한 해설풀이
#include <stdio.h>
using namespace std;
int main(){
//freopen("input.txt", "rt", stdin);
// 1. 문자열을 입력받는다.
char array[100];
//scanf("%s", &array); // 이걸로 하면 띄어쓰기 때문에 입력이 안된다.
gets(array);
// 2. 영어알파벳만 추출하여 소문자 배열로 만든다.
char englishArray[100];
int j = 0;
for(int i = 0; array[i] != '\0'; i++){
if(array[i] >= 65 && array[i] <= 90){
englishArray[j] = array[i] + 32;
j++;
}
else if(array[i] >= 97 && array[i] <= 122){
englishArray[j] = array[i];
j++;
}
}
englishArray[j] = '\0';
// 3. 알파벳 배열을 출력한다.
//for(int i = 0; englishArray[i] != '\0'; i++){ printf("%s", &englishArray[i]);}
printf("%s\n", englishArray);
return 0;
}
새롭게 알게 된 점01
스페이스바(공백)을 포함한 문자열을 입력할 때는
scanf("%s", &array);
을 쓰면 잘 입력되지 않으므로
gets(array);
을 쓰자
새롭게 알게된 점02
배열을 끝 마칠 때 '\0' 을 넣어줘서 끝났다는 표시를 해준다.
englishArray[j] = '\0';
새롭게 알게 된 점03
문자열 배열을 출력할 때
for(int i = 0; englishArray[i] != '\0'; i++){
printf("%s", &englishArray[i]);
}
을 쓰면
이런 식으로 이상하게 나온다..
printf("%s\n", englishArray);
을 쓰자
본해설
#include <stdio.h>
using namespace std;
int main(){
//freopen("input.txt", "rt", stdin);
// 1. 문자열을 입력받는다.
char array[100];
//scanf("%s", &array); // 이걸로 하면 띄어쓰기 때문에 입력이 안된다.
gets(array);
// 2. 영어알파벳만 추출하여 소문자 배열로 만든다.
char englishArray[100];
int j = 0;
for(int i = 0; array[i] != '\0'; i++){
if(array[i] != ' '){
if(array[i] >= 65 && array[i] <= 90){
englishArray[j++] = array[i] + 32;
}
else englishArray[j++] = array[i];
}
}
englishArray[j] = '\0';
// 3. 알파벳 배열을 출력한다.
//for(int i = 0; englishArray[i] != '\0'; i++){ printf("%s", &englishArray[i]);}
printf("%s\n", englishArray);
return 0;
}