Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- system programming
- For Beginners
- 백준
- Baekjoon
- 바샤
- 브런치
- file IO
- 시스템 프로그래밍
- 균형잡힌 세상
- IT
- process control
- File 조작
- 2941
- Process Communication
- 4949
- 입력 버퍼
- c
- 10773
- 전자책
- 시프
- QA
- 1874
- c++
- 5622
- BAKA
- Zero That Out
- LJESNJAK
- 해바
- The Balance of the World
- Parenthesis
Archives
- Today
- Total
해바
10809) 7. 문자열 : 알파벳 찾기 본문
문제
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출력한다. 단어의 첫 번째 글자는 0번째 위치이고, 두 번째 글자는 1번째 위치이다.
www.acmicpc.net
풀이
아래 주석과 같이 배열을
a[26] = { [ 0 ... 25 ] = -1 }
처럼 초기화한 것이 백준 채점기에서는 컴파일 에러를 냈다. gcc 레퍼런스를 보니 4.1.2 버전부터 추가된 듯한데 백준에서 돌리는 채점기는 gcc 7.3.0 버전이란다. 근데 왜..?
그냥 초기화하는 방식을 C++답게 고쳤다. C++에서는(iostream을 include하면)
std::fill_n(array name, array size, init value);
와 같이 초기화 가능하다.
※아스키코드상으로 대문자는 65 ~ 90, 소문자는 97 ~ 122 에 해당되며 대소문자간 32의 차이가 난다.
//#inlcude "cstdio"
#include "iostream"
using namespace std;
int main() {
// int a[26]{ [ 0 ... 25 ] = -1 };
int a[26];
fill_n(a, 26, -1);
char str('\0');
for(int i(0); str != '\n'; i++) {
str = getchar();
if(a[str - 97] == -1) a[str - 97] = i;
}
for(int i(0); i < 26; i++) printf("%d ", a[i]);
puts("");
return 0;
}
'C, C++' 카테고리의 다른 글
1157) 7. 문자열 : 단어 공부 (0) | 2019.08.14 |
---|---|
2675) 7. 문자열 : 문자열 반복(Repeating Characters) (0) | 2019.08.12 |
11720) 7. 문자열 : 숫자의 합 (0) | 2019.08.12 |
2447) 6. 함수 : 별 찍기 - 10 (0) | 2019.08.11 |
1065) 6. 함수 : 한수 (0) | 2019.08.07 |
Comments