class Solution
{
public:
string countAndSay(int n)
{
if (n == 1)
{
return "1";
}
string result = countAndSay(n - 1);
//left Count right Num
string currResult;
char currNum = result[0];
int currCount = 0;
for (int j = 0; j < result.length(); j++)
{
if (currNum == result[j])
{
currCount++;
}
if (currNum != result[j])
{
currResult += to_string(currCount) + currNum;
currCount = 1;
currNum = result[j];
}
}
currResult += to_string(currCount) + currNum;
result = currResult;
return result;
}
};
풀이
1. 다른 숫자가 나올 때마다 개수를 세서 왼쪽에는 개수 오른쪽은 해당 숫자를 적립해준다.
2. 그것을 n번 만큼 반복해준다.
느낀점
반복할 때 값을 어떻게 넣을 것인지에 대해 빠르게 생각해야될 것같다.
https://leetcode.com/problems/count-and-say/
'Algorithm > HackerRank, LeetCode' 카테고리의 다른 글
[C++] 리트코드 221. Maximal Square (1) | 2024.02.16 |
---|---|
[C++] 리트코드 279. Perfect Squares (0) | 2024.02.16 |
[C++] 해커랭크 Cut the Tree (0) | 2023.12.26 |