서울에서 김서방 찾기

김현민·2021년 3월 16일
0

Algorithm

목록 보기
39/126
post-thumbnail

문제

내 코드

#include <bits/stdc++.h>

using namespace std;

string solution(vector<string> seoul)
{

    string answer = "";
    string temp = "";

     for (int i = 0; i < seoul.size(); i++)
     {
         if (seoul[i] == "Kim")
         {
             temp = to_string(i);
             break;
         }
     }

     answer = "김서방은 " + temp + "에 있다.";
    return answer;
}



다른사람의 코드


#include <bits/stdc++.h>

using namespace std;

string solution(vector<string> seoul)
{

    string answer = "";
    
    int pos = find(seoul.begin(), seoul.end(), "Kim") - seoul.begin();

    

     answer = "김서방은 " + pos + "에 있다.";
    return answer;
}
  • find의 return type은 iterator이므로 seoul.begin()값을 빼주어야 int형이 나온다.

iterator ?

반복자 , 포인터처럼 보면 될듯

예제

vector<int>::iterator  iter;
vector<int> v;
v.push_back(10);
v.push_back(20);
v.push_back(30);
v.push_back(40);
v.push_back(50);

iter = v.begin();
cout<<iter[3]<<endl; ---> 40

iter+= 2;
cout<<*iter<<endl;  ----> 30

문제에 대입해보면,

iter  = find(seoul.begin(), seoul.end(), "Kim") ;
--> int형으로 받을 수 없다. 위치(주소)값이기 때문

그래서 뒤에 seoul.begin() : (0) 을 빼준다. 그러면 int형으로 받을 수 있다.

int pos = find(seoul.begin(), seoul.end(), "Kim") - seoul.begin();
profile
Jr. FE Dev

0개의 댓글