📄문제

현수의 컴퓨터가 바이러스에 걸려 영어단어가 뛰어쓰기와 대소문자가 혼합되어 표현된다.
예를 들면 아름다운 이란 뜻을 가지고 있는 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
bonnate