GPT + 나의 풀이 (전체적인 아이디어는 내 몫이었지만 문법이나 string 함수는 gpt의 몫이었다.. 사실상 반 이상 ..)
#include <string>
#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
string solution(vector<string> seoul) {
string answer = "김서방은 "; // answer의 첫 글자 초기화
for (int i = 0; i < seoul.size(); i++) {
if (seoul[i] == "Kim") { // seoul의 원소가 "Kim"과 같다면
answer += to_string(i); // answer에 string으로 변환한 i 삽입
answer = answer.append("에 있다"); // append()로 바로 뒤에 삽입
break;
}
}
std::cout << answer << std::endl; // 이걸 해야 testcase를 통한 출력 가능
return answer;
}
int main() {
vector<string> testcase = {"Jane", "Suwan", "Kim", "wiseStone"};
cout << solution(testcase) << endl;
return 0;
}
compare() 함수: str.compare(str2)
str과 str2가 같은지를 비교. 같다면 0, str<str2 인 경우 음수, str>str2 인 경우 양수를 반환
append() 함수: str.append(str2)
str 뒤에 str2 문자열을 이어 붙여줌 ('+' 와 같은 역할)
line 12: answer += to_string(i);
보이는 그대로 현재 초기화된 "김서방은 " 에 if 조건문에 적합한 i를 string으로 바꾸어 "+" 기능으로 추가한 것이다. 여기서 to_string(i)로 string 변환이 이루어졌어야 했는데 기존에 내가 한 방식은 append로 i를 추가하는 것을 생각했었다. 이또한 구글링으로 찾아본 함수였는데 접근 방식이 잘못되었음을 알게되었다. string을 다루고 수를 다룰때는 to_string()으로 한 번 변환 후 접근해야겠다.
line 14: break;
break가 있고 없고의 차이는 문제의 당락을 결정하진 않았다. 하지만 시간 제한이 더 빡셌다면 주요했을수도 있다는 생각이 들었다. 왼쪽이 break; 문을 쓰지 않은 결과이고, 오른쪽이 break; 문을 사용한 결과이다. 미세하지만 0.01~0.02ms의 차이를 보인다는 것을 알 수 있었다.
다른 사람의 풀이
#include <string>
#include <vector>
using namespace std;
string solution(vector<string> seoul) {
string answer = "";
int nIndex = 0;
for (int i = 0; i < seoul.size(); i++)
{
if (seoul[i] == "Kim")
{
nIndex = i;
break;
}
}
answer = "김서방은 " + to_string(nIndex) + "에 있다";
return answer;
}