๋ณธ๋ฌธ์œผ๋กœ ๋ฐ”๋กœ๊ฐ€๊ธฐ
728x90
๐Ÿ”—๋ฌธ์ œ ๋ณด๋Ÿฌ๊ฐ€๊ธฐ
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

์ฝ”๋“œ ์ค‘์‹ฌ์˜ ๊ฐœ๋ฐœ์ž ์ฑ„์šฉ. ์Šคํƒ ๊ธฐ๋ฐ˜์˜ ํฌ์ง€์…˜ ๋งค์นญ. ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค์˜ ๊ฐœ๋ฐœ์ž ๋งž์ถคํ˜• ํ”„๋กœํ•„์„ ๋“ฑ๋กํ•˜๊ณ , ๋‚˜์™€ ๊ธฐ์ˆ  ๊ถํ•ฉ์ด ์ž˜ ๋งž๋Š” ๊ธฐ์—…๋“ค์„ ๋งค์นญ ๋ฐ›์œผ์„ธ์š”.

programmers.co.kr

 

๐Ÿ‘จ‍๐Ÿ’ปํ’€์ด ๊ณผ์ •

 

๋ณ„ ๊ฑฐ ์•„๋‹Œ ๋ฌธ์ œ๋ผ๊ณ  ์ƒ๊ฐํ–ˆ๋Š”๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ์˜ค๋ž˜ ๊ฑธ๋ ค ๋ฒ„๋ ธ๋„ค์š”... ์ฃผ์–ด์ง„ ์ˆซ์ž๋ฅผ ๋ฌธ์ž์—ด์— ๋‹ด์•„, 3๋ฐฐ๋งŒํผ ํ‚ค์šด ํ›„ ๋น„๊ตํ•ด์ฃผ์—ˆ์Šต๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด,

// ํ•œ ์ž๋ฆฌ ์ˆซ์ž์ผ ๊ฒฝ์šฐ
"5" -> "555"

// ๋‘ ์ž๋ฆฌ ์ˆซ์ž์ผ ๊ฒฝ์šฐ
"45" -> "454545"

// ...

 

3๋ฐฐ๋กœ ํ•ด์ฃผ๋Š” ์ด์œ ๋Š” ์ตœ์†Œ ์ž๋ฆฟ์ˆ˜๊ฐ€ ํ•œ ์ž๋ฆฌ์ด๊ธฐ ๋•Œ๋ฌธ์ด์ฃ . 4๋ฐฐ๋ฅผ ํ•ด์ฃผ๊ฒŒ ๋˜๋ฉด, ์ž…๋ ฅ ๋ฐ์ดํ„ฐ ๋ฒ”์œ„ ์ตœ๋Œ“๊ฐ’์ธ 1000์„ ๋„˜์–ด๊ฐ€๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์•„๋ฌดํŠผ, ๋ณ€ํ™˜์„ ์™„๋ฃŒํ–ˆ์œผ๋‹ˆ, ๋‹ค์Œ ๊ธฐ์ค€์— ๋”ฐ๋ผ ์ •๋ ฌํ•ด์ฃผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

  1. ๋งจ ์•ž ์ž๋ฆฌ๋ถ€ํ„ฐ ๋น„๊ตํ•ด๊ฐ€๋ฉฐ, ํฐ ์ˆ˜๊ฐ€ ์•ž์œผ๋กœ ๊ฐ€๋„๋ก ํ•œ๋‹ค.
  2. ํฐ ์ˆ˜๊ฐ€ ์—†๋‹ค๋ฉด, ๋‘ ๋ณ€ํ™˜๋œ ์ˆ˜์˜ ๊ธธ์ด๋ฅผ ํ™•์ธํ•œ๋‹ค. ๋‘ ๊ธธ์ด๊ฐ€ ๊ฐ™๋‹ค๋ฉด ๋˜‘๊ฐ™์€ ์ˆ˜์ด๋ฏ€๋กœ, false ๋ฆฌํ„ด
  3. ๊ทธ๊ฒŒ ์•„๋‹ˆ๋ผ๋ฉด, ๊ธธ์ด๊ฐ€ ์ž‘์€ ์ชฝ์ด ์•ž์œผ๋กœ ๊ฐ€๋„๋ก ํ•œ๋‹ค.
  4. ํ•ฉ์น  ๋ฌธ์ž์—ด๋“ค์ด ๋ชจ๋‘ '0'์œผ๋กœ๋งŒ ์ด๋ฃจ์–ด์ ธ ์žˆ๋‹ค๋ฉด, "0"์„ ๋ฆฌํ„ดํ•˜๋Š” ์˜ˆ์™ธ ์ฒ˜๋ฆฌ๋ฅผ ํ•ด์ค˜์•ผ ํ•œ๋‹ค.

 

โœ๏ธ์†Œ์Šค ์ฝ”๋“œ ๋ฐ ๊ฒฐ๊ณผ

#include <string>
#include <vector>
#include <algorithm>
using namespace std;
const int MULTIPLY = 3;

class Data {
public:
    Data() { }
    Data(int num) {
        originNumber = to_string(num);
        for (int i = 0; i < MULTIPLY; i++)
            convertedNumber += originNumber;
    }

    bool operator<(const Data& other) {
        for (int i = 0; i < convertedNumber.length() and i < other.convertedNumber.length(); i++) {
            if (convertedNumber[i] == other.convertedNumber[i])
                continue;
            return convertedNumber[i] > other.convertedNumber[i];
        }

        if (convertedNumber.length() == other.convertedNumber.length())
            return false;
        return convertedNumber.length() < other.convertedNumber.length();
    }
    
public:
    string originNumber;
    string convertedNumber;
};

string solution(vector<int> numbers) {
    vector<Data> myData;
    bool isZero = true;

    for (const auto element : numbers) {
        if (element != 0 and isZero) {
            myData.emplace_back(Data(element));
            isZero = false;
            continue;
        }

        myData.emplace_back(Data(element));
    }

    if (isZero)
        return "0";

    sort(myData.begin(), myData.end());
    string answer = "";

    for (const auto element : myData)
        answer += element.originNumber;
    return answer;
}

 

 

728x90
๋ฐ˜์‘ํ˜•