반응형
https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
코드
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
int count = 0;
int n[26]; //알파벳 A~Z의 위치를 출력해줄 배열
char a[100];
for (int i = 0; i < 26; i++) {
n[i] = -1; // 알파벳이 단어에 포함되어 있지 않는 것으로 초기화
}
scanf("%s", a);
while (a[count] != 0) { //NULL값까지
int j = 0;
j = a[count] - 97; //ASCII코드를 고려
if (n[j] == -1) {n[j] = count;} // 처음등장하는 위치만 고려 중복 없애기
count++;
}
for (int i = 0; i < 26; i++) {
printf("%d ", n[i]);
}
return 0;
}
풀이 전
1. 알파벳이 처음 등장하는 위치로 배열을 초기화 해야 한다.(즉,중복이 없어야 한다.)
2. a~z 라는연속되는 값에 해당하는 위치 인덱스를 출력해야한다.
즉,아스키코드를 사용해야 한다.
(a부터 z까지 97에서 122로 표현된다.)
이 두 개만 고려하면 푸는데 딱히 어려움은 없었다.
소문자만 받아왔기 때문이다. 대문자의 아스키 코드는 또 다르다.
풀이 후
역시 아스키코드에 대해 잘 알고 있어야 하는 문제였다. 아스키 코드에 대해 까먹었다면
반응형
'Baekjoon' 카테고리의 다른 글
[C] 백준 1712번 : 손익분기점 (0) | 2023.01.18 |
---|---|
[C] 백준 2675번 : 문자열 반복 (0) | 2023.01.15 |
[C] 백준 11720번 : 숫자의 합 (0) | 2023.01.14 |
[C] 백준 10951번 : A + B - 4 (2) | 2023.01.13 |
[C] 백준 9498번 : 시험 성적 (0) | 2023.01.11 |