[프로그래머스 Level 1] 서울에서 김서방 찾기

문제

서울에서 김서방 찾기  

 

String형 배열 seoul의 element중 "Kim"의 위치 x를 찾아, "김서방은 x에 있다"는 String을 반환하는 함수, solution을 완성하세요. seoul에 "Kim"은 오직 한 번만 나타나며 잘못된 값이 입력되는 경우는 없습니다.

 

제한 사항

  1. seoul은 길이 1 이상, 1000 이하인 배열입니다.
  2. seoul의 원소는 길이 1 이상, 20 이하인 문자열입니다.
  3. "Kim"은 반드시 seoul 안에 포함되어 있습니다.

 

코드

#include <string>
#include <vector>
#include <algorithm>

using namespace std;

string solution(vector<string> seoul) 
{
    string answer = "";
    
    auto it = find(seoul.begin(), seoul.end(), "Kim");
    answer = "김서방은 " + to_string(it-seoul.begin()) + "에 있다"; 
    
    return answer;
}

 

나의 생각

algorithm 라이브러리에 정의된 find 함수는 [first, last) 범위에서 val(특정 값)을 찾는데 사용된다.

val과 동일한 첫 번째 원소를 가리키는 반복자를 반환하며 val과 동일한 원소가 없다면 last를 반환한다.

 

find로 원소를 찾았다면 반환된 반복자에 begin을 빼주면 원소의 인덱스를 알 수 있다.