Leetcode 문제 풀이이다. C++를 사용하여 해당 사이트의 문제들을 풀어나갈 예정이다.
description :
문자열 배열을 입력받아 각각의 값들의 문자가 같은 부분까지 출력하는 코드를 작성해야 한다.
ef)
1. 각 문자열을 배열로 나누어 저장한다.
2. 첫 번째 문자열의 각 글자와 다른 문자열의 같은 위치에 있는 글자를 비교한다.
3. 글자가 모두 같으면 그 글자를 공통 접두사로 저장하고, 그렇지 않으면 중단한다.
위와 같은 방식으로 코드를 작성하였다.
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
//문자열 배열이 비어 있을 경우
if (strs.empty()) return "";
string prefix = strs[0];
for (int i = 1; i < strs.size(); ++i) { // 나머지 단어들과 비교
string currentWord = strs[i];
// 접두사가 일치하는 한 접두사를 점점 줄여감
int j = 0;
while (j < prefix.size() && j < currentWord.size() && prefix[j] == currentWord[j]) {
j++;
}
// 접두사를 줄이면서 저장
prefix = prefix.substr(0, j);
// 공통 접두사가 없으면 빈 문자열 반환
if (prefix.empty()) return "";
}
return prefix;
}
};
전체 코드이다.
알고리즘을 짜고 디버깅을 하면서 GPT의 도움을 받아 아직 C++ 함수들의 사용에 익숙하지 않다는 것을 느낄 수 있는 문제였다.