CodeFights arcade intro #10
Given two strings, get the total number of common characters between them.
주어진 2개의 String에서, 똑같은 Character의 총 개수를 구하라.
//Process
//1. Input two strings
//2. Iterate first string from begin to the end
// 2.1. If the number is not existed in the charArray1, then add and count
// 2.2. If existed, just count
//3. Iterate second string from begin to the end
// 3.1. If the number is not existed in charArray2, then add and count
// 3.2. If existed, just count
//4. Iterate any charArray
// 4.1. Check if the same char is in another charArray
// 4.1.1. If so, add smaller count in countArray to countSum
//5. Return countSum
//처리과정
//1. 문자열 2개를 입력받는다.
//2. 첫번째 string 처음부터 끝까지 반복한다.
// 2.1. 처음 나온 숫자면 배열1에 추가하고, 카운트배열1에 추가한다.
// 2.2. 있던 숫자면 해당 인덱스의 카운트를 센다.
//3. 두번째 string 처음부터 끝까지 반복한다.
// 3.1. 처음 나온 숫자면 배열2에 추가하고, 카운트배열2에 추가한다.
// 3.2. 있던 숫자면 해당 인덱스의 카운트를 센다.
//4. 숫자배열1이나 2 중 length 까지 반복
// 4.1. 해당 배열 숫자가 다른 배열에 있으면 해당 인덱스의 카운트배열1,2 중 작은 카운트를 카운트합에 더한다.
//5. 카운트합 출력한다.
int commonCharacterCount(std::string s1, std::string s2) {
int countSum = 0;
std::vector<string> charArray1;
std::vector<string> charArray2;
std::vector<int> countArray1;
std::vector<int> countArray2;
int s1Length = s1.length();
int s2Length = s2.length();
string tempChar;
bool isExist;
int j;
for (int i = 0; i < s1Length; ++i)
{
tempChar = s1.at(i);
isExist = false;
j = 0;
while (j < charArray1.size() && !isExist)
{
if (charArray1.at(j) == tempChar)
{
isExist = true;
}
++j;
}
if (isExist)
{
countArray1.insert(countArray1.begin() + j - 1, ++countArray1.at(j - 1));
countArray1.erase(countArray1.begin() + j);
}
else
{
charArray1.push_back(tempChar);
countArray1.push_back(1);
}
}
for (int i = 0; i < s2Length; ++i)
{
tempChar = s2.at(i);
isExist = false;
j = 0;
while (j < charArray2.size() && !isExist)
{
if (charArray2.at(j) == tempChar)
{
isExist = true;
}
++j;
}
if (isExist)
{
countArray2.insert(countArray2.begin() + j - 1, ++countArray2.at(j-1));
countArray2.erase(countArray2.begin() + j);
}
else {
charArray2.push_back(tempChar);
countArray2.push_back(1);
}
}
//숫자배열1, 카운트배열1, 숫자배열2, 카운트배열2 를 비교
int length1 = charArray1.size();
for (int i = 0; i < length1; ++i)
{
tempChar = charArray1.at(i);
isExist = false;
j = 0;
while (j < charArray2.size() && isExist == false)
{
if (charArray2.at(j) == tempChar)
{
isExist = true;
}
++j;
}
if (isExist)
{
int tempCount;
if (countArray1.at(i) < countArray2.at(j-1))
{
tempCount = countArray1.at(i);
}
else
{
tempCount = countArray2.at(j-1);
}
countSum += tempCount;
}
}
return countSum;
}
2018/09/26 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #9 AllLongestStrings
2018/09/24 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #8 MatrixElementsSum
2018/09/23 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #7 AlmostIncreasingSequence
2018/09/22 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #6 MakeArrayConsecutive2
2018/09/21 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #5 ShapeArea
2018/09/19 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #4 AdjacentElementsProduct
2018/09/16 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #3 CheckPalindrome
2018/09/16 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #2 CenturyFromYear
2018/09/16 - [Algorithm/Code Signal (Code Fights)] - Aracade Intro #1 Add
'Algorithm > Code Fights (Code Signal)' 카테고리의 다른 글
Aracade Intro #12 SortByHeight (0) | 2018.10.08 |
---|---|
Aracade Intro #11 IsLucky (0) | 2018.10.06 |
Aracade Intro #9 AllLongestStrings (0) | 2018.09.26 |
Aracade Intro #8 MatrixElementsSum (0) | 2018.09.24 |
Aracade Intro #7 AlmostIncreasingSequence (0) | 2018.09.23 |