본문 바로가기

Algorithm/Code Fights (Code Signal)

Aracade Intro #49 lineEncoding. Algorithm, 알고리즘 문제풀이, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

Aracade Intro #49 lineEncoding. Algorithm, 알고리즘 문제풀이, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar



Q.


 Given a string, return its encoding defined as follows:

First, the string is divided into the least possible number of disjoint substrings consisting of identical characters
for example, "aabbbc" is divided into ["aa", "bbb", "c"]
Next, each substring with length greater than one is replaced with a concatenation of its length and the repeating character
for example, substring "bbb" is replaced by "3b"
Finally, all the new strings are concatenated together in the same order and a new string is returned.

 주어진 문자열에서, 다음과 같이 인코딩된 것을 반환해라.

 먼저, 문자열은 동일한 문자열로 구성된 쪼개진 하위문자열의 가능한 가장 작은 수로 나누어진다.
 예를 들면, "aabbbc" 는 aa, bbb, c 로 나누어진다.
 다음, 1보다 큰 각 하위문자열의 길이를 가진 것들은- 그것의 길이와, 반복되는 문자의 결합으로 대체된다.
 예를들면, 하위문자열 bbb -> 3b 가 된다.
 마지막으로, 모든 새로운 문자열들은 다 결합되어 (같은 순서로) 반환된다.



e.g.


Input -> s = "aabbbc"


Output -> lineEncoding(s) = "2a3bc"




처리과정 Process


#1

//Process

//1. Input string

//2. Iterate from begin to the end

// 2.1. Count alphabet in char number array

//3. Iterate from begin to the char number array

// 3.1. Add number and char to resultString 

//4. Return resultString


//처리과정

//1. 문자열을 입력받는다.

//2. 시작부터 끝까지 반복한다.

// 2.1. 배열에서 해당 알파벳 위치 값을 센다

//3. 배열의 시작부터 끝까지 반복한다.

// 3.1. 배열의 숫자와 해당 위치 알파벳 (ascii) 를 리턴 문자열에 붙인다.

//4. 리턴문자열 반환한다.



#2

//Process

//1.Input string

//2. Iterate from begin to the end

// 2.1. Check it has countinous same value after it or not

//  2.1.1. If that char is last one, add number and char to resultString

//3. Return resultString


//처리과정

//1. 스트링 입력받는다.

//2. 시작부터 끝까지 반복한다.

// 2.1. 해당 char가 다음에도 같은 char 인지 확인하고 센다.

//  2.1.1. 해당 char의 끝부분이면, resultString에 갯수와 해당 char를 입력한다.

//3. resultString 반환한다.





Code.. Lemme see code!!!!!


코드.. 코드를 보자!!!!!




std::string lineEncoding(std::string s) {


    string resultString = "";

    int count = 0;

    

    

    // #1

//     int charNumberArray[26] = { 0 };

//     for (int i = 0; i < s.size(); ++i)

//     {

//         ++charNumberArray[s[i]-97];

//     }

//     for (int i = 0; i < sizeof(charNumberArray)/sizeof(charNumberArray[0]); ++i)

//     {

//         if (charNumberArray[i] > 0)

//         {

//             if (charNumberArray[i] > 1)

//             {

//                 resultString += to_string(charNumberArray[i]);

//             }

//             resultString += char(i+97);

//         }

//     }

//     for (int i = 0; i < (sizeof(charNumberArray)/sizeof(charNumberArray[0])); ++i)

//     {

//         cout << charNumberArray[i] << " ";

//     }

    

    

    // #2 it's answer code

    

    for (int i = 0; i < s.size(); ++i) 

    {

        ++count;

        if (s[i+1] != 0)

        {

            if (s[i] != s[i+1])

            {

                if (count == 1)

                {

                    resultString += s[i];

                } 

                else 

                {

                    resultString += string(to_string(count)) + s[i];

                }

                count = 0;

            }

        } 

        else 

        {

            if (count == 1) 

            {

                resultString += s[i];

            } 

            else 

            {

                resultString += string(to_string(count)) + s[i];

            }

        }

    }

    

    return resultString;

    

    

    

//     Process

//     1. Input string s

//     2. Prepare array size lowercase alphabet number

//     3. Iterate s from begin to the end

//      3.1. Count+1 in the vector index(char ascii - alphabetNumber)

//     4. Iterate array from begin to the end

//      4.1. Check if it's over 1 or 2

//       4.1.1. If over 1 - add that alphabet only to resultString

//       4.1.2. if over 2 - add that count and alphabet to resultString

//     5. Return resultString

    

//     string resultString;

    

//     int alphabet[26] = {0};

//     for (int i = 0; i < s.size(); i++) {

//         alphabet[s.at(i) - 97]++;

//     }

//      string s1;

//     for (int i = 0; i < 26; i++) {

//         if (alphabet[i] == 1) {

//             s1 = (char) (i + 97);

//             resultString += s1;

//         } else if (alphabet[i] > 1) {

//             resultString += to_string(alphabet[i]);

//             s1 = (char) (i + 97);

//             resultString += s1;

//         }

//     }

    

//     return resultString;

}







Something else you might like..



2018/12/26 - [Programming/Design Pattern ] - Perfecting OO's Small Classes and Short Methods. 완벽한 객체지향의 작은 클래스와 짧은 메소드, Book:ThoughtWorks Anthology, Java,cpp,자바,oop,좋은코드,객체지향프로그래밍



2018/12/25 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #46 electionsWinners. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/21 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #45 buildPalindrome. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/20 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #44 findEmailDomain. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/17 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #43 isBeautifulString. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/16 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #42 bishopAndPawn. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/14 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #41 digitDegree. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/12 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #40 longestDigitsPrefix. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar

2018/12/10 - [Algorithm/Code Fights (Code Signal)] - Aracade Intro #39 knapsackLight. Algorithm, 알고리즘, Codefights, CodeSignal, 코드파이트, 코드시그널, 예제, example, c++ java c# scalar



2018/12/20 - [Programming/Java] - How to convert file to byte array (byte[]) example, 파일 객체 바이트로 변환하기 예제코드, java/cpp/c++/scalar


2018/12/18 - [Programming/Java] - How to access controller from existing Pane in JavaFX, pane에서 해당 controller로 접근하기, java/cpp/c++/fx/gui


2018/12/13 - [Computer/Linux] - How to check ongoing live process on Linux cmd, 리눅스 커맨드창에서 어떤 프로세스가 실행중인지 확인하기, java, ubuntu, cpp



2018/12/16 - [Life/Health care] - L-Arginine 아르기닌 usage/side effects/dosage 효능/부작용/성인,소아 용법(2)

2018/12/06 - [Life/Health care] - Vitamin C 비타민 씨 usage/side effects/dosage 용법/효능/부작용

2018/12/02 - [Life/Health care] - Maca 마카 usage/side effects/dosage 효능/부작용/용법