본문 바로가기

programming/알고리즘 풀이

[백준 알고리즘] 10809번 - 알파벳 찾기

반응형

1. 문제 및 예시 실행결과

 

  항상 문제를 풀면 실전처럼 풀어야 하지 않을까 하고 생각한다. 그래서 오늘 문제은 문제를 풀때, 구글을 사용하지 않고 풀어보았다. 신기하게도 알파벳을 찾는 문제가 나왔다. 분명 이런 역할을 하는 함수는 존재한다. 그러나 나는 그것을 까먹었다. 내가 어떤 코드를 작성하고 있을 때는, 바로 구글을 켰겠지만, 나는 지금 코딩테스트를 본다고 생각하고 아는 문법으로 문제를 풀기 시작하였다. 물론 관련된 함수도 이번 글에서 소개할 것이다. 다음은 문제와 예시실행결과이다.

 

출처: https://www.acmicpc.net/problem/10809

 

10809번: 알파벳 찾기

각각의 알파벳에 대해서, a가 처음 등장하는 위치, b가 처음 등장하는 위치, ... z가 처음 등장하는 위치를 공백으로 구분해서 출력한다. 만약, 어떤 알파벳이 단어에 포함되어 있지 않다면 -1을 출

www.acmicpc.net


문제 10809번


 이번 문제도 그렇게 어렵지는 않다. 알파벳도 소문자만 입력되기 때문에 생각보다 간단하게 풀었던것 같다.


10809번 예시 실행결과


2. 문제풀이

 

 내가 선택한 방법은 간단하다. a부터 z까지의 수를 일일이 순차적으로 문자열과 비교해보고 일치하면 위치를 출력하고 위치하는 문자가 하나도 없으면 -1을 출력하는 방식이다. 물론 2중 for문으로 구현할 수 있다. 다음은 나의 코드이다.

#include <stdio.h>
#define SIZE 100

int main(void) {
	char input[SIZE];
	char alp = 'a';
	scanf("%s", input);

	for (int i = 0; i < 26; i++) {
		int j = 0;
		while (1) {
			if (input[j] == alp) {
				printf("%d ", j);
				break;
			}
			if (input[j] == NULL) {
				printf("%d ", -1);
				break;
			}
			j++;
		}
		alp++;
	}
	return 0;
}

 이미 아는 분들이 많겠지만, 문자열을 탐색해주는 함수는 이미 존재한다. 나는 그 함수의 자세한 문법을 모르기에 저렇게 푼 것이다. strchr() 이라는 함수인데 검색을 해 보길 바란다. 물론 정수값을 찾아주는 것이 아니기 때문에, 약간 손보는 방법이 필요하겠지만 유용한 함수이다.

 

3. 결어

 

오늘은 풀이가 짧다고 생각하는 분들이 많을 것 같다. 내일이 시험이어서 최대한 줄여서 쓴것은 사실이다...... 그래도 학점은 나름 중요하니....... 내일 부터는 아마 조금 정성스러운 풀이가 올라오지 않을까 싶다. 

반응형