바야바네 움집
[1157] 문자열 : 단어 공부 본문
📌대 · 소문자 변환
1. 아스키 코드를 사용해 직접 변환
- 소문자를 대문자로 바꾸고 싶은 경우 : 바꾸고자 하는 char - 'a' + 'A'
- 대문자를 소문자로 바꾸고 싶은 경우 : 바꾸고자 하는 char - 'A' + 'a'
계산 원리는
1. 해당 알파벳의 위치를 찾아내서 (char - 'a' or 'A')
2. 원하는 쪽에서 찾는 방식이다. ((1) + 'A' or 'a')
2. cctype 라이브러리의 tolower, toupper 함수 사용
- string 전체를 한번에 바꾸지 못하기 때문에 인덱스를 사용해 일일이 변환해주어야 한다는 번거로움이 있음.
📌풀이
전부 대문자로 바꾼 다음에 개수를 센다. 효율 개떨어지는 듯. 깔깔
📌코드
#include <iostream>
#include <string>
#include <unordered_map>
using namespace std;
string myToUpper(string _str)
{
string temp = "";
for(int i=0; i<_str.length(); i++)
{
int c = _str[i];
if(c >= 'a' && c <= 'z')
temp += (char)(c - 'a' + 'A');
else
temp += (char)c;
}
return temp;
}
int main()
{
int max;
char maxChar;
string str;
unordered_map<char, int> alphabet;
getline(cin, str);
str = myToUpper(str);
for(int i=0; i<str.length(); i++)
{
alphabet[str[i]]++;
}
max = -1;
for(auto a : alphabet)
{
if(max < alphabet[a.first])
{
max = alphabet[a.first];
maxChar = a.first;
}
}
for(auto a : alphabet)
{
if(max == alphabet[a.first] && maxChar != a.first)
{
printf("?");
return 0;
}
}
printf("%c", maxChar);
return 0;
}
'🧶 알고리즘 > 🎲백준BOJ' 카테고리의 다른 글
[9095][C++] 1, 2, 3 더하기 (0) | 2022.04.15 |
---|---|
[1463][C++] 1로 만들기 (0) | 2022.04.15 |
[10809] 문자열 : 알파벳 찾기 (0) | 2021.11.23 |
[11654] 문자열 : 아스키 코드 (0) | 2021.11.23 |
[6588번] 골드바흐의 추측 (0) | 2021.08.31 |
Comments