Baekjoon

[백준 C++] 10809번 - 알파벳 찾기

yujin0517 2022. 1. 3. 16:38

10809번 - 알파벳 찾기

10809번 문제

 

<코드 작성>

  1. 문자열 입력받기(string 타입)
  2. alpha 배열(알파벳 개수만큼) 선언 후, -1로 초기화 
  3. 'str[i] - 97'를 alpha배열의 인덱스로 사용하여 몇 번째 자리에 해당 알파벳이 존재하는지 배열 값으로 대입
  4. 만약 알파벳이 중복으로 존재할 경우 먼저 확인된 자리 번호를 기억하도록 함
  5. alpha배열 출력

10809번 예제

 

#include <iostream>
using namespace std;

int main() {
	string str;
	cin >> str;

	int alpha[26] = {};
	for (int i = 0; i < 26; i++) {
		alpha[i] = -1;
	}

	for (int i = 0; i < str.length(); i++) {
		if (alpha[str[i] - 97] != -1) continue;
		alpha[str[i] - 97] = i;
	}

	for (int i = 0; i < 26; i++) {
		cout << alpha[i] << " ";
	}
	return 0;
}

 

코드를 작성할 때, alpha[str[i] - 97]의 값이 -1인지 아닌지를 판단하는 과정이 제일 중요하다고 생각합니다. 

처음에는 배열의 값이 -1인지 판단하는 코드를 작성하지 않아 중복된 알파벳이 있을 경우 해당 알파벳의 배열 값이 계속 바뀌는 경우가 발생했습니다. 때문에 문제에서 알려준 답과 일치하지 않았습니다. 

애초에 중복된 알파벳을 고려하지 않고 코드를 작성했던 것입니다. 잠깐 고민후 continue를 사용해서 문제를 해결했습니다. 

 

 

감사합니다!

2022.01.03

'Baekjoon' 카테고리의 다른 글

[백준 C++] 4673번 - 셀프 넘버  (0) 2022.01.06
[백준 C++] 10817번 - 세 수  (0) 2022.01.03
[백준 C++] 1157번 - 단어공부  (0) 2021.12.31
[백준 C++] 2675번 - 문자열 반복  (0) 2021.11.16
[C++] 11653번 - 소인수분해  (0) 2021.09.30