Training/BOJ

[C++] 10809 알파벳 찾기

FATKITTY 2020. 8. 10. 01:39
반응형

 

 

코드 짤 때부터 이렇게 하는게 맞나 싶어서 제출 한 다음에 다른 사람들이 쓴 코드를 찾아봤는데

역시 쉬운 방법이 있었다.

STL 함수는 많이 써보고 많이 외워두자.

 

처음에 제출한 코드

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

void Location(string x)
{
	int* loc = new int[26];

	for (int i = 0; i < 26; i++) loc[i] = -1;

	for (int j = 0; j < x.length(); j++) {
		char ch = x[j];
		//cout << ch << endl;
		if (loc[int(ch)-97] == -1) {
			switch (ch)
			{
			case 'a':
				loc[0] = j;
				break;
			case 'b':
				loc[1] = j;
				break;
			case 'c':
				loc[2] = j;
				break;
			case 'd':
				loc[3] = j;
				break;
			case 'e':
				loc[4] = j;
				break;
			case 'f':
				loc[5] = j;
				break;
			case 'g':
				loc[6] = j;
				break;
			case 'h':
				loc[7] = j;
				break;
			case 'i':
				loc[8] = j;
				break;
			case 'j':
				loc[9] = j;
				break;
			case 'k':
				loc[10] = j;
				break;
			case 'l':
				loc[11] = j;
				break;
			case 'm':
				loc[12] = j;
				break;
			case 'n':
				loc[13] = j;
				break;
			case 'o':
				loc[14] = j;
				break;
			case 'p':
				loc[15] = j;
				break;
			case 'q':
				loc[16] = j;
				break;
			case 'r':
				loc[17] = j;
				break;
			case 's':
				loc[18] = j;
				break;
			case 't':
				loc[19] = j;
				break;
			case 'u':
				loc[20] = j;
				break;
			case 'v':
				loc[21] = j;
				break;
			case 'w':
				loc[22] = j;
				break;
			case 'x':
				loc[23] = j;
				break;
			case 'y':
				loc[24] = j;
				break;
			case 'z':
				loc[25] = j;
				break;
			}
		}
	}

	for (int k = 0; k < 26; k++) {
		cout << loc[k] << ' ';
	}
}

int main()
{
	string X;
	cin >> X;
	Location(X);

	return 0;
}

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

정말 열심히 삽질했다.

 

수정본

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

int main()
{
	string S;
	cin >> S;
	int* loc = new int[26];
	for (int i = 0; i < 26; i++) loc[i] = -1;

	int c = 97;
	for (int j = 0; j < 26; j++) loc[j] = S.find(c + j);

	for (int k = 0; k < 26; k++) cout << loc[k] << ' ';

	return 0;
}

string의 find 함수라니

이제 절대 안 잊을듯

 

확실히 짧아진 코드 길이 ㅋㅋ

 

반응형

'Training > BOJ' 카테고리의 다른 글

[C++] 10996 별 찍기 - 21  (0) 2020.08.10
[C++] 2446 별 찍기 - 9  (0) 2020.08.10
[C++] 2869 달팽이는 올라가고 싶다  (0) 2020.08.08
[C++] 8958 OX퀴즈  (0) 2020.08.03
[C++] 3052 나머지  (0) 2020.08.03