문제
- https://www.acmicpc.net/problem/4458
풀이
간단하게 입력 문자열이 들어오면 문자열 첫번째 문자가 대문자인지 확인후 아니라면 대문자로 소문자에서 대문자로 변환해주고 출력시켜주면 되는 문제다. 헤더 파일 ctype.h의 isupper() ,islower() 함수를 사용하여 쉽게 대소문자 판별이 가능하다.
원래 헤더 파일 string.h에 strupr()와 strlwr() 함수로 쉽게 대소문자 변환이 가능했지만 더이상 사용할 수 없다.
https://learn.microsoft.com/ko-kr/cpp/c-runtime-library/reference/strupr-wcsupr?view=msvc-170
때문에 ASCII 표를 참고하여 대문자와 소문자는 32만큼 차이난다는 점을 활용하여 문자열 첫번째 index의 값을 가져와 조정해주면 된다.
https://en.wikipedia.org/wiki/ASCII
코드
#include <stdio.h>
#include <ctype.h> //islower 함수가 들어있는 헤더 파일
int main(void) {
int n;
char str[30]; //글자의 수는 30을 넘지 않는다 (문제 참고)
scanf("%d", &n);
for (int i = 0; i < n; i++) {
scanf(" %[^\n]", str); //[^\n]: 공백을 포함하여 입력받을 수 있음
if (islower(str[0]) != 0) { //scanf말고 gets,fgets 사용해도 가능
str[0] -= 32; //소문자에서 대문자로 변경
printf("%s\n", str);
} else {
printf("%s\n", str); //이미 대문자이면 그냥 출력
}
}
return 0;
}
'Algorithm > BOJ' 카테고리의 다른 글
[백준/Python] 1764 듣보잡 (0) | 2024.08.10 |
---|---|
[백준/Python] 17219 비밀번호 찾기 (0) | 2024.08.10 |
[백준/Python3] 1251 단어 나누기 (0) | 2024.08.09 |
[백준/C99/Python] 9295 주사위 (0) | 2024.08.06 |
[백준/C99] 2566 최댓값 (0) | 2024.07.30 |