근본없는 코딩
[C++] 백준10809 알파벳 찾기 본문

#include <iostream>
using namespace std;
int main() {
char str[101];
int res[26];
cin >> str;
for (int i = 0; i < 26; i++) res[i] = -1;
for (int i = 0; i < 100; i++) {
if (str[i] == '\0') break;
if (res[str[i] - 'a'] == -1) res[str[i] - 'a'] = i;
}
for (int i = 0; i < 26; i++) cout << res[i] << ' ';
return 0;
}
✔️ C++ 배열 초기화 방법
일단 0으로 초기화하는 방법은 int arr[10] = {0,}; 로 하면 10개의 배열 칸이 모두 0으로 초기화 된다.
그럼 마찬가지로 다른 값으로 초기화 하려면 int arr[10] = {-1,}; 가 될까 싶었는데, 결론적으론 안된다.
(첫번째 값만 -1가 되고 나머지는 0으로 초기화 된다.)
✨그럼 특정 값으로 배열을 초기화하는 방법은 뭐가 있을까?
|
① for문
이게 싫어서 찾아보기 시작한건데, 오히려 몇몇 방법에 비해 이게 더 간단하고 빠르다는 말이 많다.
② GCC를 사용한다면
int array[100] = { [0 ... 99] = -1 }; //0부터 99까지 -1로 초기화
③ C++인 경우 fill_n 함수 사용
std::fill_n(array, 100, -1);
④ 기타
C#의 경우 Enumerable.Repeat(값, 사이즈).ToArray()를 사용하면 된다.
ex) bool[] booleanArray = Enumerable.Repeat(true, 10).ToArray();
C에서 -1이나 0은 memset함수로 초기화가 가능하다.
ex) memset(arr, 0, sizeof(int) * SIZE);
|
'✔ Online Judge' 카테고리의 다른 글
| [C++] 백준1152 단어의 개수 (0) | 2023.06.25 |
|---|---|
| [C++] 백준2675 문자열 반복 (0) | 2023.06.25 |
| [C++] 백준11720 숫자의 합 (0) | 2023.06.25 |
| [C++] 백준11654 아스키 코드 (0) | 2023.06.25 |
| [C++] 백준9086 문자열 (0) | 2023.06.25 |