[Leetcode] 38. Count and Say

Algorithm|2021. 11. 19. 17:18
반응형
 

Count and Say - LeetCode

Level up your coding skills and quickly land a job. This is the best place to expand your knowledge and get prepared for your next interview.

leetcode.com

문제 잘못 이해해서 시간이 두 배로 걸림 하하하

 

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

댓글()