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

[C++] ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค - "๊ฐ€์žฅ ํฐ ์ˆ˜" ํ’€์ด

meeeeejin 2020. 6. 3. 20:30

๋ฌธ์ œ ์„ค๋ช…

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ์ฃผ์–ด์กŒ์„ ๋•Œ, ์ •์ˆ˜๋ฅผ ์ด์–ด ๋ถ™์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ์•Œ์•„๋‚ด ์ฃผ์„ธ์š”.

์˜ˆ๋ฅผ ๋“ค์–ด, ์ฃผ์–ด์ง„ ์ •์ˆ˜๊ฐ€ [6, 10, 2]๋ผ๋ฉด [6102, 6210, 1062, 1026, 2610, 2106]๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ณ , ์ด์ค‘ ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 6210์ž…๋‹ˆ๋‹ค.

 

0 ๋˜๋Š” ์–‘์˜ ์ •์ˆ˜๊ฐ€ ๋‹ด๊ธด ๋ฐฐ์—ด numbers๊ฐ€ ๋งค๊ฐœ๋ณ€์ˆ˜๋กœ ์ฃผ์–ด์งˆ ๋•Œ, ์ˆœ์„œ๋ฅผ ์žฌ๋ฐฐ์น˜ํ•˜์—ฌ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋ฅผ ๋ฌธ์ž์—ด๋กœ ๋ฐ”๊พธ์–ด return ํ•˜๋„๋ก solution ํ•จ์ˆ˜๋ฅผ ์ž‘์„ฑํ•ด์ฃผ์„ธ์š”.

 

 

๋ฌธ์ œ ์ฃผ์†Œ: https://programmers.co.kr/learn/courses/30/lessons/42746

 

๋ฌธ์ œ ํ’€์ด

numbers์˜ ์›์†Œ๋“ค์„ string ํƒ€์ž…์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ •๋ ฌ์„ ์‹คํ–‰ํ•˜๋ฉด ์•ž์ž๋ฆฌ๊ฐ€ ํฐ ์ˆœ์„œ๋Œ€๋กœ ์ •๋ ฌ๋œ๋‹ค. 

ํ•˜์ง€๋งŒ {"3", "30"}์˜ ๊ฒฝ์šฐ {"3", "30"}์œผ๋กœ ์ •๋ ฌ๋˜์–ด์•ผ ํ•˜๋Š”๋ฐ {"30", "3"}์œผ๋กœ ์ •๋ ฌ๋˜๋ฏ€๋กœ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค. 

๋น„๊ตํ•จ์ˆ˜ comp๋ฅผ ๋งŒ๋“ค์–ด์„œ ๋‘ string์„ ๋”ํ–ˆ์„๋•Œ(์—ฐ๊ฒฐํ–ˆ์„ ๋•Œ) ๊ฐ’์ด ์ปค์ง€๋Š” ๊ฒฝ์šฐ true๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ํ•ด์ฃผ๋ฉด ๋œ๋‹ค.

 

๋‹ต์•ˆ์„ ์ œ์ถœํ–ˆ์„ ๋•Œ ํ…Œ์ŠคํŠธ11์„ ํ†ต๊ณผํ•˜์ง€ ๋ชปํ–ˆ๋Š”๋ฐ, {0, 0}๊ณผ ๊ฐ™์€ ๊ฒฝ์šฐ ์˜ˆ์™ธ์ฒ˜๋ฆฌ๋ฅผ ์•ˆํ•ด์คฌ๊ธฐ ๋•Œ๋ฌธ์ด์—ˆ๋‹ค. 

numbers๊ฐ€ {0, 0}์ผ ๊ฒฝ์šฐ answer์ด "0"์ด ๋˜์–ด์•ผํ•˜๋Š”๋ฐ "00"์ด ๋˜๋ฏ€๋กœ ์ด๋ฅผ ์ฒ˜๋ฆฌํ•ด์ค˜์•ผ ํ•œ๋‹ค.

๋”ฐ๋ผ์„œ temp์˜ ์ฒซ๋ฒˆ์งธ ์›์†Œ๊ฐ€ "0"์œผ๋กœ ์‹œ์ž‘ํ•˜๋ฉด "0"์„ returnํ•˜๋„๋ก ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ–ˆ๋‹ค. 

 

 

์†Œ์Šค ์ฝ”๋“œ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#include <string>
#include <vector>
#include <algorithm>
 
using namespace std;
 
bool comp(string a, string b) {
    return a + b > b + a;
}
 
string solution(vector<int> numbers) {
    string answer = "";
    vector<string> temp;
 
    for (auto num : numbers)
        temp.push_back(to_string(num)); // numbers ์›์†Œ๋ฅผ stringํ˜•์œผ๋กœ ๋ฐ”๊ฟ”์„œ ์ €์žฅ
    sort(temp.begin(), temp.end(), comp);
 
    if (temp[0== "0")
        return "0";
    else
        for (const auto num : temp)
            answer += num;
 
    return answer;
}
 
cs
728x90