[Leetcode] 38. Count and Say
Algorithm2021. 11. 19. 17:18
반응형
문제 잘못 이해해서 시간이 두 배로 걸림 하하하
n = 1은 1로 기본값으로 두고
n = 2는 n=1에서 1개의 1이 있다는 뜻으로
11이 된다.
n = 3는 n=2 에서 2개의 1이 있다는 뜻으로
21이 된다.
n = 4는 n=3 에서 1개의 2가 있고, 1개의 1이 있다는 뜻으로
1211이 된다.
"n = 5는 1231이 되겠네"
가 아니라
1개의 1이 있고, 1개의 2가 있고, 2개의 1이 있다 이므로
111221 이 되어야함
MAIN IDEA
k번째와 k+1 번째가 다르면
카운트된 숫자와 k번째 숫자를 ans 에 더한다.
class Solution {
public:
string countAndSay(int n)
{
string ans;
int count = 0;
if(n == 1) return "1";
else if(n == 2) return "11";
ans = "11";
for(int i=2; i<n; i++)
{
string tmp;
//아래에서 정산이라함은 MAIN IDEA를 의미한다.
for(int k=0; k<ans.size(); k++)
{
count++; //탐색 글자가 다음 글자와 같으면 count 증가
if(k<ans.size()-1 && ans[k] != ans[k+1])
{
tmp += to_string(count) + ans[k];
count = 0;
// 탐색 글자가 다음 글자와 다르면 끊고 정산
}
else if(k==ans.size()-1 && ans[k-1] == ans[k])
{
tmp += to_string(count) + ans[k];
count = 0;
}
// 마지막 탐색 글자가 이전 글자와 같으면 정산
else if(k==ans.size()-1 && ans[k-1] != ans[k])
{
tmp += to_string(1) + ans[k];
count = 0;
}
// 마지막 탐색 글자가 이전 글자와 다르면 마지막 글자만 따로 정산
}
ans = tmp;
}
return ans;
}
};
반응형
'Algorithm' 카테고리의 다른 글
[백준] 17210. 문문문 (0) | 2021.11.21 |
---|---|
[백준] 17211. 좋은날 싫은날 (0) | 2021.11.21 |
[Leetcode] 860. Lemonade Change (0) | 2021.11.19 |
[Leetcode] 6. Zigzag Conversion (0) | 2021.11.18 |
[Leetcode] 551. Student Attendance Record I (0) | 2021.11.18 |
댓글()