인프런 커뮤니티 질문&답변

mhyim님의 프로필 이미지
mhyim

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

2-E와 분할정복(Divide & Conquer)

2-E string() 함수? 질문

작성

·

377

1

- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!
- 먼저 유사한 질문이 있었는지 검색해보세요.
- 서로 예의를 지키며 존중하는 문화를 만들어가요.
- 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.

멘토님 안녕하십니까?

string()이게 생소해서 질문 드립니다.

아래는 멘토님이 짜신 정답 코드 일부인데요

string quard(int y, int x, int size){

if(size == 1) return string(1, a[y][x]);

char b = a[y][x];

string ret = "";

for(int i = y; i < y + size; i++){

for(int j = x; j < x + size; j++){

if(b != a[i][j]){

ret += '(';

ret += quard(y, x, size / 2);

ret += quard(y, x + size / 2, size / 2);

ret += quard(y + size / 2, x, size / 2);

ret += quard(y + size / 2, x + size / 2, size / 2);

ret += ')';

return ret;

}

}

}

return string(1, a[y][x]);

}

 

2번째 줄과 마지막 줄에 string()를 써서

1또는 0을 return한다고 강의에서 말씀하셨는데,

string이 함수로 쓴다는건 처음알아서 생소해서 그런지 이해가 안갑니다.

부가 설명을 해주실 수 있을까요?

 

또, 구글링으로 "c++ string()"정도로만 검색해도 자료가 잘 안나오던데, 제가 직접 찾아보려면 msdn? 어디서 찾아보면 좋을 지 조언 받을 수 있을까요?

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요 mh님 ㅎㅎ

string이 함수로 쓴다는건 처음알아서 생소해서 그런지 이해가 안갑니다.

부가 설명을 해주실 수 있을까요?

>> 음 이 질문은 2가지일 수가 있어서 2가지 다 답변드립니다.

  1. string 타입을 반환하는 함수입니다.

예를 들어 이런것을 생각하시면 되요. 다음 코드는 문자열 큰돌을 반환합니다.

string get_kundol(){
	return "KUNDOL";
}

  1. string(1, a[y][x]);

>> 이 부분을 질문하실 수도 있는데요. 이부분은 char타입 한개를 string 형으로 바꿔주는 함수입니다.

조금 더 자세히 설명해볼까요?

해당 부분은 string의 constructor 함수입니다.

다음 코드 처럼 정의되며 c로 n짜리 string을 초기화한다라는 의미입니다.

string (size_t n, char c);

예를 들어볼까요?

다음 코드는 10개짜리 b를 반환하는 것을 볼 수 있습니다.

#include<bits/stdc++.h>
using namespace std; 
char b = 'b';
int main(){
    cin.tie(NULL);
    cout.tie(NULL); 
    string s = string(10, b);
    cout << s << '\n'; 
    return 0;

}

참고로 해당 코드를 쓴 이유는 무string을 반환하는 함수이기 때문에 char 타입이 아닌 string 타입을 반환하는 것을 맞춰주기 위함입니다.

감사합니다.

mhyim님의 프로필 이미지
mhyim
질문자

2번이 궁금했습니다.

답변 감사합니다

mhyim님의 프로필 이미지
mhyim

작성한 질문수

질문하기