일상
[c++] 백준 10809 본문
//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