👩🏻‍💻 Programming/C++

Find()와 Substr()

한국의 메타몽 2020. 2. 10. 22:02

백준 2941번 '크로아티아 알파벳' 문제를 풀며 떠올린 메소드 들이다. 

https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

문제 예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž는 무조건 하나의 알파벳으로 쓰이고,

www.acmicpc.net

Find()의 개념을 착각하고 있어서 푸는데 시간이 다소 걸리게 되었다. 

둘의 기능을 각각 설명하자면 하단과 같다. 

 

1. (int) 객체.Find(문자열) : 문자열에서 해당 문자열이 포함되어있다면, 해당 문자열의 첫 번째 인덱스를 반환

str 문장에 "just"라는 단어가 있기 때문에, 해당 단어의 첫번째 인덱스를 반환했으며

반대로 "leave"라는 단어는 없기때문에 -1을 리턴하였다. 

 

 

2. (string) 객체.Substr(시작 위치, 문자열의 길이) : 문자열의 일부분을 문자열로 반환 

위 문장은 i번째에서 그 다음으로 3번째까지 (즉, 3개의 단어가) "dz="와 같은지 판단하는 문장이다. 

즉, 'somestring.substr(a,b)'는 somestring이라는 문자열의 a번째 위치에서부터  b까지의 문장을 따로 반환한다는 의미가 된다.