728x90
백준 문제 1157번 C++풀이이다.
아래 코드는 정답이었지만
너무 길고 복잡한 것 같아서
고수들의 코드를 확인해보려고 했는데..
소름돋게 똑같은 알고리즘을 써서;;
내가 맞게 잘 한 거구나.. 라는 생각과 함께
여러 풀이들이 변수이름까지 똑같은 걸 보고 다들 정답을 보고 하는 구나;;
라는 생각을 하며..
힌트와 답을 공유한다.
#include <iostream>
#include <string>
int main() {
std::string str;//문자열
std::cin >> str;//문자열 입력
int count[26] = { 0 };//카운트
for (int i = 0, idx = 0; i < str.length(); i++)
{
idx = str[i];
if (idx < 97)//대문자면 65를 빼고
idx -= 65;
else//소문자면
idx -= 97;//97을 빼서 알파벳 번호에 ++을 함
count[idx]++;
}
int max, idx = 0;//최대값과 알파벳 번호
bool overlap = false;//중복되는가
max = -1;//초기 최대값, 코드를 짜고 보니 0으로도 된다.
for (int i = 0; i < 26; i++) {
if (max < count[i])//max를 갱신해야 한다면
{
max = count[i];//일단 max갱신하고
idx = i;//알파벳 번호도 바꾸고
overlap = false;//중복이 아니므로 false
}
else if (max == count[i])
{
overlap = true;//max와 count[i]가 같다면 중복이므로 true
}
}
if (overlap) std::cout << '?';//중복이면 ?
else std::cout << char(idx + 65);//아니면 알파벳 번호 + 65로 대문자로 출력.
}
728x90
'Programming > C & C++' 카테고리의 다른 글
[C/C++] 9.4강 - switch & break | 제어문, 조건 관리하기 (0) | 2022.01.15 |
---|---|
[C/C++] 백준 1152번 C++ 풀이 (0) | 2021.09.01 |
[C/C++] Win32 API 첫 예제! (0) | 2021.08.24 |
[C/C++] 9.3강 - 제어문, 조건 관리하기 (for 사용법) (0) | 2021.08.17 |
[C/C++] 9.2강 - 제어문, 조건 관리하기 (while 사용법) (2) | 2021.08.01 |