Coding/Step By Step

Baekjoon Training / string / find / #10809

빈그레 2023. 2. 2. 15:42

 

 


#10809

 

 

 

 

 

#include <iostream>
#include <string.h>
using namespace std;


int main() {
	//char alpha[27] = "abcdefghijklmnopqrstuvwxyz";도 가능 
	string alpha = "abcdefghijklmnopqrstuvwxyz";

	string word;
	cin >> word;

	for (int i = 0; i <26;i++) {
		for (int j = 0;j < word.size();j++) {
			if (alpha[i]==word[j]) { 
				cout << j;
				break;
			}
			if (j == word.size() - 1) cout << "-1";
		}
		cout << " ";
	}
}

 

char type array로 하나씩 for문을 돌리지 않아도 

위와 같이 큰따옴표로 바로 넣어도 문자열의 문자가 하나씩 배열로 들어간다.

허나, char array로 선언하면 배열 크기가 필요하므로 string으로 더욱 간편하게 하였다.

 

j가 word.size()-1와 같을 때는 단어의 마지막 문자까지 break없이 비교되었음을 의미하므로 

"-1"을 출력해준다.

 

알파벳 간의 구분은 공백으로 하므로 가장 바깥 for문의 마지막에 " "공백을 넣어준다.

 

 

 

find 함수를 활용한 풀이
#include <iostream>
#include <string>
using namespace std;
int main() {
    string word;
    string alphabet = "abcdefghijklmnopqrstuvwxyz";
    cin >> word;
    for (int i = 0; i < alphabet.length(); i++)
        cout << (int)word.find(alphabet[i]) << " ";
    return 0;
}

find함수를 활용하면 argument로 들어온 문자열과 동일한 값을 word에서 찾아 word에서의 index 값을 출력한다. 

허나, 아무 값도 찾지 못했을 때 값은 -1인데 find함수에서 자료형이 unsigned로 되어있어

"-1" 정수 형태로 표현하기 위하여 (int)word.find....와 같이 앞에 (int)를 붙여 출력하였다.

 

첫번째 코드에서처럼 "-1"을 따로 출력하려하는 것이 아니라 string stl을 활용하여

find함수를 통해 "-1"를 출력하는 것이 이 문제에서 요구하는 정답이었던 것 같다.

 

 

 

따옴표 차이
작은 따옴표 : 문자  
큰 따옴표 : 문자열

 

 

size와 length의 차이

첫번째 전체 코드에서는 입력받는 문자열의 길이를 파악할 때에 size 함수를 사용하였으나 두번째 전체 코드에서는 length함수를 사용하였다.  size() ,length()는 같은 값을 반환하지만, 의미가 다르다.

length()는 문자열의 길이를 나타내지만, size()는 해당 string 객체가 메모리에서 실제 사용하고 있는 크기를 나타낸다.