본문 바로가기

코딩 테스트

백준 1157

 

쉬운 문제라고 생각했는데 생각보다 어려웠다.

문자를 아스키코드를 이용하여 int로 형변환 후 num 의 인덱스로 넣는 것은 쉽게 했다.

그런데 해당 인덱스  값(int)를 다시 아스키코드로 만드는데 시간이 걸렸다.

 

결국 c 언어 char 의 기본조차 제대로 이해못했었던 것 같다....

char(n)

으로 n 값에 i + 65 로 설정해서 다시 대문자를 넣어주었다.

문제를 너무 어지럽게 푼 것만 같아서 다른 풀이를 더 찾아봐야겠다..

#include <iostream>
#include <string>
#include <vector>
#include <charconv>
using namespace std;

int main(void)
{
	ios::sync_with_stdio(false);
	cin.tie(NULL);
	
	string al;
	cin >> al;
	vector<int> num(1000,0);
	int num2 = 0;
	char an;

	bool up= false;

	for (int i = 0; i < al.size(); ++i)
	{
		al[i] = toupper(al[i]);
		num[((int)al[i] - 65)]++;
	}

	for (int i = 0; i < 40; ++i)
	{
		if (num[i] > num2)
		{
			num2 = num[i];
			an = char((i + 65));
			up = false;
		}
		else if (num[i] == num2)
		{
			up = true;
		}
	}

	if (up)
	{
		cout << "?";
	}
	else
	{
		cout << an;
	}

	return 0;
}

'코딩 테스트' 카테고리의 다른 글

백준 4153  (0) 2023.06.19
백준 11654  (0) 2023.06.17
백준 10950  (0) 2023.06.17
백준 2750  (0) 2023.06.15
백준 2751  (0) 2023.06.15