Notice
Recent Posts
Recent Comments
«   2025/07   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Archives
관리 메뉴

일상

[c++] 백준 10809 본문

programming

[c++] 백준 10809

Mysteryu 2023. 5. 22. 22:12
//ascii a : 97

#include <iostream>
int main() {

	
	std::string s;
	std::cin >> s;

	int alpha[26];


	for (int i = 0; i < 26; i++) {
		alpha[i] = -1;
		for (int j = 0; j < s.length(); j++) {
			if (s[j] == char(i + 97) && alpha[i] == -1) {
				alpha[i] = j;
			}
		}
	}

	for (int k = 0; k < 26; k++) {
		std::cout << alpha[k] << " ";
	}
	std::cout << "\n";
	
}

위는 제출했던 코드

 

시간복잡도가 별로 좋지 않다고 생각했기 때문에 다른 분들의 코드를 참고한 결과 아래와 같게 수정할 수 있었다.

 

//ascii a : 97

#include <iostream>
int main() {

	
	std::string s;
	std::cin >> s;

	int alpha[26];

	for (int k = 0; k < 26; k++) {
		alpha[k] = -1;
	}

	for (int i = 0; i < s.length(); i++) {
		if(alpha[int(s[i]) - 97] == -1)
			alpha[int(s[i]) - 97] = i;
	}

	for (int j = 0; j < 26; j++) {
		std::cout << alpha[j] << " ";
	}
	std::cout << "\n";	
}

배열의 -1값과 출력을 위한 반복문을 제외한다면 이쪽 코드가 시간 복잡도가 더 좋은 것 같다

'programming' 카테고리의 다른 글

[c++] 백준 1157  (0) 2023.05.30
[c++] 백준 10988  (0) 2023.05.25
sizeof vs alignof  (0) 2022.08.20
[C++] switch 문 안에서 변수 선언 시 에러 발생  (0) 2022.08.09
[ubuntu] tev - the exr viewer 설치 관련  (0) 2022.08.09
Comments