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값과 출력을 위한 반복문을 제외한다면 이쪽 코드가 시간 복잡도가 더 좋은 것 같다