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

kkim360님의 프로필 이미지
kkim360

작성한 질문수

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

[필수개념] split() 함수

split함수 질문 있습니다!

작성

·

323

0

http://boj.kr/1209b05bb2834533b556253dab193f9d

  1. 교안에 있는 스플릿함수에서 string::npos의 기능은 무엇이고 언제 !=string::npos가 실행되는지 궁금합니다.

  2. pos선언시 pos의 값은 숫자에 불과할텐데 int가 아닌 long long을 사용하신 이유가 궁금합니다!

답변 1

2

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

안녕하세요 kkim님 ㅎㅎ

  1. 교안에 있는 스플릿함수에서 string::npos의 기능은 무엇이고 언제 !=string::npos가 실행되는지 궁금합니다.

>>

string의 find 메서드는 특정 문자열을 찾아 위치를 반환하는데요. 이 메서드는 만약 해당 문자열을 못 찾을 경우  string::npos를 반환합니다.

string::npos는 size_t 타입의 최대값을 의미합니다. size_t 타입의 최대값은 OS에 따라 달라지며 64비트 운영체제라면 64비트 부호가 없는 최대정수, 32비트 운영체제라면 32비트 부호가 없는 최대 정수값을 가집니다. 필자의 컴퓨터는 64비트 운영체제이기 때문에 18446744073709551615라는 값을 가집니다. 

 

pos선언시 pos의 값은 숫자에 불과할텐데 int가 아닌 long long을 사용하신 이유가 궁금합니다!

>> 숫자기 때문에 가장 큰 숫자를 다룰 수 있는 long long을 쓰는게 좋습니다. 이는 함수를 만들 때 확장성적인 측면이 들어갔다라고도 볼 수 있습니다. 예를 들어 매우 큰 문자열에서 어떠한 pos를 찾는다고 했을 때 21억이 넘어가는 pos가 담길 수도 있겠죠? 즉, int로는 커버가 불가능한 경우의 수를 대비해 long long을 기반으로 구축했습니다.

 

 

또 질문 있으시면 언제든지 질문 부탁드립니다.

좋은 수강평과 별점 5점은 제가 큰 힘이 됩니다. :)

감사합니다.

강사 큰돌 올림.

kkim360님의 프로필 이미지
kkim360

작성한 질문수

질문하기