📄문제
현수의 컴퓨터가 바이러스에 걸려 영어단어가 뛰어쓰기와 대소문자가 혼합되어 표현된다.
예를 들면 아름다운 이란 뜻을 가지고 있는 beautiful 단어가 “bE au T I fu L” 과 같이 컴퓨터에 표시되고 있습니다. 위와 같이 에러로 표시되는 영어단어를 원래의 표현대로 공백을 제거하고 소문자화 시켜 출력하는 프로그램을 작성하세요.
ℹ️ 조건
첫 줄에 바이러스에 걸린 영어단어가 주어진다.
바이러스에 걸린 영어단어의 길이(공백포함)는100을 넘지 않는다.
문자사이의 공백은 연속적으로 존재할 수 있습니다. 입력은 알파벳과 공백만 주어집니다.
⬇️ 입력
bE au T I fu L
⬆️ 출력
첫 줄에 소문자로 된 정상적인 영어단어를 출력한다.
beautiful
📝 풀이
#include <iostream>
int main()
{
char input[101];
scanf_s("%100[^\n]", input, sizeof(input));
for (int i = 0; input[i] != '\0'; ++i)
if (input[i] != ' ')
printf("%c", input[i] <= 'Z' ? input[i] + 32 : input[i]);
return 0;
}
- scanf_s를 이용할 때, 공백을 모두 포함시켜 개행문자까지 입력을 받기 위해서 %100[^\n] 포맷을 사용하였습니다.
- 위 포맷은 최대 100자를 입력받고, \n이 아닐때까지 모든 문자열을 입력받는다는 뜻 입니다.
- input 문자를 모두 검사하여 공백 기호가 아닐때 문자를 출력합니다.
- 단, 문자가 'Z'보다 작다면, 알파뱃의 개수인 32를 더하여 출력하도록하여 소문자만 출력되도록 하였습니다.
'algorithms (C++)' 카테고리의 다른 글
[C++] 모두의 약수 (0) | 2023.10.13 |
---|---|
[C++] 올바른 괄호 (0) | 2023.10.13 |
[C++] 숫자만 추출 (0) | 2023.10.13 |
[C++] 나이 구하기 (0) | 2023.10.13 |
[C++] 진약수의 합 (0) | 2023.09.27 |