• 카테고리

    질문 & 답변
  • 세부 분야

    알고리즘 · 자료구조

  • 해결 여부

    미해결

1-E질문입니다!

23.03.03 11:43 작성 조회수 291

0

안녕하세요 강사님!

질문이 많은데도 항상 답글 달아주셔서 감사합니다.

http://boj.kr/db4f11ea95744e9598cedb54483b9800 // s.substr(0, 1)은 11행에 있습니다.

저는 입력한 string형 s에서 첫번째 문자를 추출하고 싶을때, s[0]이 아닌 s.substr(0, 1)을 사용하고 싶었습니다.

그러하였더니 타입이 맞지 않는다고 컴파일 에러가 떠서 int(s.substr(0, 1))로 바꾸어서 실행시켜봤지만 타입이 맞지 않는다고 컴파일 에러가 다시 떴습니다.

  1. s.substr(0, 1)은 char형인데 이것을 정수형으로 바꾸고 싶을때는 int(s.substr(0, 1)) 로 하는게 맞는건가요?

  2. s.substr(0, 1)을 이 문제에서 사용하지 못하는 이유가 있다면 이유가 무엇일까요?

 

답변 2

·

답변을 작성해보세요.

1

안녕하세요 1209님 ㅎㅎ

일단은요.

string substr (size_t pos = 0, size_t len = npos) const;

substr은 string을 반환하는 함수입니다.

즉,

이렇게 바꿔주셔야 합니다.

	for(int i = 0; i < N; i++){
		cin >> s;
        string temp = s.substr(0, 1); 
		cnt[temp[0]- 'a']++;
	}

string으로 받고

string은 제가 뭐라고했죠?

문자들을 담은 배열이다~ 라고 했죠

즉, 문자열의 0, 1, 2, 3 은 문자기 때문에 저렇게 0번째~ 하고 넣으시면 자동으로 char이 되게 됩니다.

string 벡터까지는 필요 없어요. :)

 

감사합니다.

 

0

추가적으로, string형 vector v를 만들었습니다. //5행과 12~14행

http://boj.kr/e316d230d42b42c285195ec86ce09073

하지만, 실행되지 않고 컴파일 오류가 뜹니다.

12행부터 14행까지 어느 부분이 잘못된 코드인지 봐주시면 감사하겠습니다.