https://www.acmicpc.net/problem/10809
10809번: 알파벳 찾기
각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출
www.acmicpc.net
풀이
#include <stdio.h>
int main() {
char s[101]; // 단어s는 최대 100자(널문자 포함 101)
int alp[26] = {}; // 알파벳이 어느위치에 있는지를 저장한 배열
int i, j;
scanf("%s", s);
// ★
for (i = 0; i < 26; i++) // 위치를 -1로 초기화
alp[i] = -1;
for (j = 'a'; j <= 'z'; j++){ // a~z까지 위치 찾기
i = 0; // i=0으로 초기화
while (s[i] != '\0') { // 단어s가 널문자를 만날때까지 반복
if (s[i] == (char)j) { // s[i]가 알파벳j와 같을때
alp[j - 97] = i; // alp배열에 i위치를 저장
break; // break로 빠져나옴
}
i++;
}
}
for (i = 0; i < 26; i++) {
printf("%d ", alp[i]); // 공백으로 구분해서 출력
}
return 0;
}
필자는 처음에 주석으로 별 처리된 부분의
while문을 상위에 for문을 하위에 둬, 문제에서 요구하는
"단어에 포함되어 있는 경우에는 처음 등장하는 위치를" 부분을 충족시키지 못했다.
그렇기에 for문(알파벳을 기준으로)을 상위에 while문(위치를 탐색한다)을 하위에 두고
break; 를 통해 빠져나가서 요구하는 바를 충족했다.
'코딩 > 백준 문제 (브론즈)' 카테고리의 다른 글
[백준/2720/C언어] 세탁소 사장 동혁 _ 풀이 (0) | 2023.08.11 |
---|---|
[백준/2675/C언어] 문자열 반복 _ 풀이 (0) | 2023.08.11 |
[백준/11654/C언어] 아스키 코드 _ 풀이 (0) | 2023.08.11 |
[백준/2743/C언어] 단어 길이 재기 _ 풀이 (0) | 2023.08.11 |
[백준/11720/C언어] 숫자의 합 _ 풀이 (0) | 2023.08.09 |